#include #include #if defined(_WIN32) #include #include #pragma comment (lib, "Ws2_32.lib") #define sleep(s) Sleep((s) * 1000) #else #include #include #include #endif int main(int argc, char *argv[]) { char server_message[2000] = { 0 }; char client_message[2000] = { 0 }; #if defined(_WIN32) WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR) { printf("WSAStartup failed: %d\n", iResult); return 1; } #endif int socket_desc = socket(AF_INET, SOCK_STREAM, 0); if (socket_desc < 0) { printf("Could not create socket\n"); return -1; } struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(2000); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); if (connect(socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { printf("Could not connect\n"); return -1; } printf("Connection to server established. Enter message: "); fgets(client_message, sizeof(client_message), stdin); if (send(socket_desc, client_message, strlen(client_message), 0) < 0) { printf("send() failed\n"); return -1; } printf("Sleeping...\n"); sleep(3); if (argc > 1 && strcmp(argv[1], "send_before_recv") == 0) { int r = send(socket_desc, client_message, strlen(client_message), 0); printf("send() returned %d\n", r); } printf("Calling recv()...\n"); if (recv(socket_desc, server_message, sizeof(server_message), 0) < 0) { printf("recv() failed\n"); return 1; } printf("Server message: %s\n", server_message); return 0; }