#include "inet.h" #include void main(int argc,char* argv[]) { int pn=-1; if(argc>1) pn=atoi(argv[1]); int sockfd; struct sockaddr_in servaddr,localAddr; char server[80]; strcpy(server,(argc<3) ? SERV_HOST_ADDR : argv[2]); //bzero((char*)&servaddr,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=inet_addr((argc<3) ? SERV_HOST_ADDR : argv[2]); servaddr.sin_port=htons((pn==-1) ? SERV_TCP_PORT : pn); if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) perror("socket error"); printf("\nConnecting to %s",(argc<3) ? SERV_HOST_ADDR : argv[2]); if(connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0) perror("can't connect to server"); printf("\nConnected.\n\n"); char sendline[2048],rline[2048+1]; cout << server << " : "; while(fgets(sendline,2048,stdin)!=NULL) { if(write(sockfd,sendline,strlen(sendline))==-1) perror(" write error on socket"); if(strncmp(sendline,"exit",4)==0) { close(sockfd); exit(0); } // else //cout << "sent : " << sendline << endl << flush; int finish=0; rline[0]=0; char eof[2]; eof[0]=26; eof[1]=0; while(!finish) { int n=read(sockfd,rline,2048); if(n==-1) perror("read error"); rline[n]=0; if(strcmp(&rline[strlen(rline)-1],eof)==0) { finish=1; rline[strlen(rline)-1]=0; } cout << rline << flush; } cout << server << " : "; } close(sockfd); }