How to create client server communication on windows in C++

1 Answer

0 votes
/*
You need to link the library: libws2_32.a 
from c:\TDM-GCC-64\x86_64-w64-mingw32\lib32\
if you using GCC on windows
*/

// Client and Server are on the same computer, with different exe files and two console windows 

// Server Program

#include <iostream>
#include <winsock2.h>
 
int main() {
	// Server Program
	
    WSAData WSAData;
	SOCKET serverSock, clientSock;
	SOCKADDR_IN serverAddr, clientAddr;
	
	WSAStartup(MAKEWORD(2, 0), &WSAData);
	
	serverSock = socket(AF_INET, SOCK_STREAM, 0);
	
	serverAddr.sin_addr.s_addr = INADDR_ANY;
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons(8888);
	
	bind(serverSock, (SOCKADDR *)&serverAddr, sizeof(serverAddr));
	
	listen(serverSock, 0);
	
	std::cout << "From server: Listening for incoming connection...\n";

	char buf[512] = "";
	int clientAddrSize = sizeof(clientAddr);
	if ((clientSock = accept(serverSock, (SOCKADDR *)&clientAddr, &clientAddrSize)) != INVALID_SOCKET) {
		std::cout << "From server: Client connected to server\n";
		recv(clientSock, buf, sizeof(buf), 0);
		std::cout << "From server: Client message: " << buf << "\n";
		
		closesocket(clientSock);
		std::cout << "From server: Client disconnected from server\n";
	}
	
	return 0;
}
 
 
 
/*
run:
 
From server: Listening for incoming connection...
From server: Client connected to server
From server: Client message: E.T. Phone Home
From server: Client disconnected from server
 
*/
// Client Program

#include <iostream>
#include <winsock2.h>
 
int main() {
	// Client Program
	
    WSAData WSAData;
	SOCKET serverSock;
	SOCKADDR_IN sockAddr;
	
	WSAStartup(MAKEWORD(2, 0), &WSAData);
	
	serverSock = socket(AF_INET, SOCK_STREAM, 0);
	
	sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
	sockAddr.sin_family = AF_INET;
	sockAddr.sin_port = htons(8888);
	
	connect(serverSock, (SOCKADDR *)&sockAddr, sizeof(sockAddr));
	
	std::cout << "From client: Connected to server\n";
	
	char buf[512] = {'E', '.', 'T', '.', ' ', 'P', 'h', 'o', 'n', 'e', ' ', 'H', 'o', 'm', 'e'};
	send(serverSock, buf, sizeof(buf), 0);
	std::cout << "From client: Message sent\n";
		
	closesocket(serverSock);
	std::cout << "From client: Socket closed\n";
	
	return 0;
}
 
 
 
/*
run:
 
From client: Connected to server
From client: Message sent
From client: Socket closed
 
*/

 



answered Apr 21, 2021 by avibootz
edited Apr 21, 2021 by avibootz

Related questions

1 answer 268 views
1 answer 358 views
1 answer 223 views
1 answer 225 views
1 answer 234 views
1 answer 274 views
...