Simple example for getting started with socket programming

  • 2020-04-02 02:14:43
  • OfStack

Function simple implementation of the client input content sent to the server output


#include <stdio.h>
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
int main() 
{
 //Initialize Winsock.
 WSADATA wsaData;
 int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
 if ( iResult != NO_ERROR )
 {
  cout<<"failed to initialize!"<<endl;
  return 0;
 }
 //To establish a socket socket.
 SOCKET client;
 client = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
 if ( client == INVALID_SOCKET ) 
 {
  cout<<"failed to create client socket!"<<endl;
  WSACleanup();
  return 0;
 }
 //Connect to the server.
 sockaddr_in clientService;
 clientService.sin_family = AF_INET;
 clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
 clientService.sin_port = htons( 13579 );
 if ( connect( client, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) 
 {
  cout<<"Failed to connect"<<endl;
  closesocket(client);
  WSACleanup();
  return 0;
 }
 //Send data.
 int bytesSent;
 char sendbuf[4096] = "Client: Sending data.";
 while(TRUE)
 {
  bytesSent = send( client, sendbuf, strlen(sendbuf), 0 );
  gets_s(sendbuf, 4096);
 }
 closesocket(client);
 WSACleanup();
 return 0;
}


#include <iostream>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
int main()
{
 WSADATA wsaData;
 int iInit = WSAStartup(MAKEWORD(2, 2), &wsaData);
 if (iInit != NO_ERROR)
 {
  cout<<"failed to initialize!"<<endl;
  return 0;
 }
 SOCKET server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP);
 if (server == INVALID_SOCKET)
 {
  cout<<"failed to create server socket!"<<endl;
  WSACleanup();
  return 0;
 }
 sockaddr_in bindinfo;
 bindinfo.sin_family = AF_INET;
 bindinfo.sin_addr.s_addr =  inet_addr( "127.0.0.1" );
 bindinfo.sin_port = htons(13579);
 if ( bind( server, (SOCKADDR*) &bindinfo, sizeof(bindinfo) ) == SOCKET_ERROR )
 {
  cout<<"failed to bind!"<<endl;
  closesocket(server);
  WSACleanup();
  return 0;
 }
 //listen
 if (listen(server, 1) == SOCKET_ERROR) {
  cout<<"listen failed"<<endl;
  closesocket(server);
  WSACleanup();
  return 0;
 }
 //accept and block
 SOCKET socketWork = accept(server, NULL, NULL);
 if (socketWork == INVALID_SOCKET) {
  wprintf(L"accept failed with error: %ldn", WSAGetLastError());
  closesocket(server);
  WSACleanup();
  return 0;
 }
 int byteRecv = SOCKET_ERROR;
 char recvBuf[4096] = "";
 while(TRUE)
 {
  byteRecv = recv(socketWork, recvBuf, 4096, 0);
  if (byteRecv == 0)
  {
   break;
  }
  recvBuf[byteRecv] = 0;
  cout<<recvBuf<<endl;
 }
 closesocket(server);
 WSACleanup();
 return 0;
}


Related articles: