/* ** clienteph.c ** Writen by Wei YIN, 20 August 2009. ** ** ** Compile with "gcc -o clienteph clienteph.c" */ #include #include #include #include #include #include #include #include int main(int argc, char* argv[]) { int fd; struct in_addr* ipAddress; struct hostent* hostp; struct sockaddr_in socketAddr; char buffer[1024]; int numBytes; int port; if(argc != 2) { fprintf(stderr, "usage: %s %s\n", argv[0], "server_port"); return -1; } port = atoi(argv[1]); if(port < 1024|| port > 65535) { fprintf(stderr, "Invalid port number: %s\n", argv[1]); exit(1); } hostp = gethostbyname("moss");// provide hostname ipAddress = (struct in_addr*)hostp->h_addr_list[0];//replace it with Server's ipAddress acquired from Name Server socketAddr.sin_family = AF_INET; socketAddr.sin_port = htons(port); /* Port number in network byte order, replace it by server's port number acquired from Name Server */ socketAddr.sin_addr.s_addr = ipAddress->s_addr; printf("ip address is %s%\n",inet_ntoa(socketAddr.sin_addr)); fd = socket(AF_INET, SOCK_STREAM, 0); if(connect(fd, (struct sockaddr*)&socketAddr, sizeof(socketAddr))==0) printf("connect to server OK\n"); else printf("connect error\n"); while(fgets(buffer, 1024, stdin)) { write(fd, buffer, strlen(buffer)); numBytes = read(fd, buffer, 1023); buffer[numBytes] = '\0'; printf("%s", buffer); fflush(stdout); } close(fd); return 0; }