1、 char bufMAXDATASIZE; char rvbufMAXDATASIZE; struct hostent *he; struct sockaddr_in server; if (argc != 2) printf(Usage: %sn , argv0); exit(-1); if (he =gethostbyname(argv1) = NULL) perror(gethostbyname error. ); exit(1); if (fd =socket(AF_INET, SOCK_STREAM, 0) = -1) Create socket failed. bzero(&ser
2、ver,sizeof(server); server.sin_family =AF_INET; server.sin_port=htons(PORT); memcpy(&server.sin_addr,he-h_addr,sizeof(struct in_addr); if (connect(fd, (struct sockaddr *)&server, sizeof(struct sockaddr) = -1)connect failed. struct sockaddr_in localaddr; socklen_t len = sizeof(localaddr); getsockname
3、(fd,(struct sockaddr *)&localaddr,&len); printf( Localip and Localport is: %s:%dn,inet_ntoa(localaddr.sin_addr),localaddr.sin_port); struct sockaddr_in peeraddr; socklen_t lenp = sizeof(peeraddr); getpeername(fd, (struct sockaddr *)&peeraddr,&lenp); Peerip and Peerport is:,inet_ntoa(peeraddr.sin_add
4、r),peeraddr.sin_port); close(fd);服务器端程序如下:sys/types.harpa/inet.h#define BACKLOG 1void process_cli(int connectfd,struct sockaddr_in client); main(void) int listenfd, connectfd; struct sockaddr_in server, client; int sin_size; if(listenfd=socket(AF_INET, SOCK_STREAM, 0)=-1) perror(Create socket failed
5、. exit(-1); int opt=SO_REUSEADDR; setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt); server.sin_port =htons(PORT); server.sin_addr.s_addr =htonl(INADDR_ANY); if (bind(listenfd, (struct sockaddr*)&server, sizeof(struct sockaddr)=-1) Bind error. if (listen(listenfd, BACKLOG) = -1) listen er
6、ror. sin_size =sizeof(struct sockaddr_in); while(1) if (connectfd =accept(listenfd, (struct sockaddr *)&client,&sin_size) = -1)accept error. close(connectfd); close(listenfd);实验二 服务器与单客户的连接处理#define MAXDATASIZE 1000int main(int argc,char * argv) int fd,numbytes; struct hostent * he; int i=1; if(argc
7、!=2) %s h_addr); if(connect(fd,(struct sockaddr *)&server,sizeof(struct sockaddr)=-1) if(numbytes=recv(fd,buf,MAXDATASIZE,0)=-1)recv error. bufnumbytes=0;Server Message: %sn,buf); while(i) Input your message(maxsize is 100): scanf(%s,buf) ; if(strlen(buf)1) i=0 ; if(numbytes=send(fd,buf,strlen(buf),
8、0)=-1) Send error.read error.n The converse of your message is :n) ;#define BACKLOG 2#define MAXCHARSIZE 1000void process_client(int connectfd,struct sockaddr_in client);int main(void) int listenfd,connectfd; struct sockaddr_in server,client; pid_t pid; if(listenfd=socket(AF_INET,SOCK_STREAM,0)=-1) server.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(listenfd,(struct sockaddr *)& if(listen(listenfd,BACKLOG)=-1) sin_size=sizeof(struct sockaddr_in); while(1) if(connectfd=accept(listenfd,(struct sockaddr *) &sin_size)=-1)Accept error.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1