The contents of this page are licensed under the following license
Windows Sockets
Daytime client |
#include <winsock2.h> #include <stdlib.h> #include <stdio.h> #define BUF_SIZE 1024 int main(int argc, char* argv[]) { WORD WRequiredVersion; WSADATA WData; SOCKET SSocket; int nConnect; int nBytes; struct sockaddr_in stServerAddr; struct hostent* lpstServerEnt; char cbBuf[BUF_SIZE]; if (argc != 3) { fprintf(stderr, "Usage: %s server_name port_number\n", argv[0]); exit(1); } /* initialize winsock */ WRequiredVersion = MAKEWORD(2, 0); if (WSAStartup(WRequiredVersion, &WData) != 0){ fprintf(stderr, "WSAStartup failed!"); exit(1); } /* look up server's IP address */ lpstServerEnt = gethostbyname(argv[1]); if (! lpstServerEnt) { fprintf(stderr, "%s: Can't get the server's IP address.\n", argv[0]); exit(1); } /* create a socket */ SSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); /* server info */ memset(&stServerAddr, 0, sizeof(struct sockaddr)); stServerAddr.sin_family = AF_INET; memcpy(&stServerAddr.sin_addr.s_addr, lpstServerEnt->h_addr, lpstServerEnt->h_length); stServerAddr.sin_port = htons(atoi(argv[2])); /* connect to the server */ nConnect = connect(SSocket, (struct sockaddr*)&stServerAddr, sizeof(struct sockaddr)); if (nConnect < 0) { fprintf(stderr, "%s: Can't connect to the server (%s:%i).\n", argv[0], argv[1], atoi(argv[2])); exit(1); } /* connection is now established; read from socket */ nBytes = recv(SSocket, cbBuf, sizeof(cbBuf), 0); cbBuf[nBytes] = '\x0'; printf("Data from SERVER [%s]:\t%s", argv[1], cbBuf); closesocket(SSocket); /* terminate use of the winsock */ WSACleanup(); return 0; } |
August, 23rd 2006 © Michał Kalewski