/*
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
*/