#include #include #include #include #include #include #define SERVER_PORT 7111 #define LEN_RECVBUFFER 1000 #define SERVER_IP_ADDRESS "127.0.0.1" int main() { int sfd; struct sockaddr_in saddr; pid_t childpid; size_t lenrecv, lensent, len, wlen; char recvbuffer[LEN_RECVBUFFER+1]; char sendbuffer[LEN_RECVBUFFER]; if ( 0 > ( sfd = socket(PF_INET,SOCK_STREAM,0) ) ) { perror("socket()-call"); exit(1); } bzero((char *)&saddr,sizeof(saddr)); saddr.sin_family = AF_INET; saddr.sin_addr.s_addr = inet_addr(SERVER_IP_ADDRESS); saddr.sin_port = htons(SERVER_PORT); if ( -1 == (connect(sfd,(struct sockaddr *)&saddr,sizeof(saddr) )) ) { perror("connect()-call"); exit(1); } if ( 0 > (childpid = fork()) ) { perror("fork()-call"); exit(1); } if ( !childpid ) { while ( 1 ) { if ( 0 > (lenrecv = read(sfd,recvbuffer,LEN_RECVBUFFER)) ) { perror("read()-call"); exit(0); } if ( lenrecv > 0 ) { recvbuffer[lenrecv] = 0; printf("%s",recvbuffer); fflush(NULL); } } } while ( 1 ) { scanf("%s",sendbuffer); len = strlen(sendbuffer); sendbuffer[len] = '\n'; sendbuffer[len+1] = 0; len = len + 1; lensent = 0; while ( lensent < len ) { if ( 0 > (wlen = write(sfd, &(sendbuffer[lensent]), len - lensent)) ) { perror("write()-call"); exit(1); } lensent = lensent + wlen; } if ( !strncmp(sendbuffer,"STOP",sizeof("STOP")) ) { close(sfd); exit(0); } } }