client.c
text/x-csrc
Filename: client.c
Type: text/x-csrc
Part: 2
#include <stdio.h>
#include <string.h>
#if defined(_WIN32)
#include <windows.h>
#include <winsock.h>
#pragma comment (lib, "Ws2_32.lib")
#define sleep(s) Sleep((s) * 1000)
#else
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#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;
}