/* Create a TCP socket */ #include #include #include #include "message.h" // Acad's IP Address #define SERV_HOST_ADDR "156.12.127.18" #pragma comment(lib,"ws2_32.lib") //Winsock Library int main(int argc , char *argv[]) { WSADATA wsa; SOCKET sockfd; struct sockaddr_in server; char *message; int SERV_TCP_PORT, i; char *pname; MES mes_out, mes_in, tmp; printf("Please input the same integer input to the ser program\n"); printf(" (which is larger than 1023)\n"); scanf("%d", &SERV_TCP_PORT); pname = argv[0]; printf("\nInitialising Winsock..."); if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) { printf("Failed. Error Code : %d",WSAGetLastError()); return 1; } printf("Initialised.\n"); //Create a socket if((sockfd = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET) { printf("Could not create socket : %d" , WSAGetLastError()); } printf("Socket created.\n"); server.sin_addr.s_addr = inet_addr("156.12.127.18"); server.sin_family = AF_INET; server.sin_port = htons(SERV_TCP_PORT); //Connect to remote server if (connect(sockfd , (struct sockaddr *)&server , sizeof(server)) < 0) { puts("connect error"); return 1; } puts("Connected"); //Send some data mes_out.mtype = htonl(getpid()); for(i=0; i<10; i++) { mes_out.number = htonl(i); if(send(sockfd, (char *)&mes_out, sizeof(MES),0) == -1) { perror("client: write"); exit(3); } if(recv(sockfd, (char *)&tmp, sizeof(MES),0) == -1) { perror("server: read"); exit(4); } mes_in.mtype = ntohl(tmp.mtype); mes_in.number = ntohl(tmp.number); fprintf(stderr, "client %d output: %d %d\n", getpid(), mes_in.mtype, mes_in.number); sleep(1); } close(sockfd); exit(0); }