如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Socket编程(TCP)客户端:/*TCP/IP应用编程接口(API)*//**客户端的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数*将其与本机地址以及一个本地端口号绑定,请求连接服务器,通过新的socket*向客户端发送字符串"hi,Iamclient!"。最后关闭该socket。*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>intmain(){intcli_sockfd;/*客户端SOCKET*/intaddrlen;charseraddr[14];structsockaddr_inser_addr,/*服务器的地址*/cli_addr;/*客户端的地址*/charmsg[MAX_MSG_SIZE];/*缓冲区*/GetServerAddr(seraddr);cli_sockfd=socket(AF_INET,SOCK_STREAM,0);/*创建连接的SOCKET*/if(ser_sockfd<0){/*创建失败*/fprintf(stderr,"sockerError:%s\n",strerror(errno));exit(1);}/*初始化客户端地址*/addrlen=sizeof(structsockaddr_in);bzero(&ser_addr,addrlen);cli_addr.sin_family=AF_INET;cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);cli_addr.sin_port=0;if(bind(cli_sockfd,(structsockaddr*)&cli_addr,addrlen)<0){/*棒定失败*/fprintf(stderr,"BindError:%s\n",strerror(errno));exit(1);}/*初始化服务器地址*/addrlen=sizeof(structsockaddr_in);bzero(&ser_addr,addrlen);ser_addr.sin_family=AF_INET;ser_addr.sin_addr.s_addr=inet_addr(seraddr);ser_addr.sin_port=htons(SERVER_PORT);if(connect(cli_sockfd,(structsockaddr*)&ser_addr,&addrlen)!=0)/*请求连接*/{/*连接失败*/fprintf(stderr,"ConnectError:%s\n",strerror(errno));close(cli_sockfd);exit(1);}strcpy(msg,"hi,Iamclient!");send(sockfd,msg,sizeof(msg),0);/*发送数据*/recv(sockfd,msg,MAX_MSG_SIZE,0);/*接受数据*/printf("%s\n",msg);/*在屏幕上打印出来*/close(cli_sockfd);return0;}服务器:/*TCP/IP应用编程接口(API)*//**服务器的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及*一个本地端口号绑定,然后调用listen在相应的socket上*,当accpet接收到一个连接服务请求时,*将生成一个新的socket。服务器显示该客户机的IP地址,并通过新的socket向客户端发送字符串*"hi,IamSERver!"。最后关闭该socket。*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>intmain(){intsock_fd,client_fd;/*sock_fd:*socket;client_fd:数据传输socket*/structsockaddr_inser_addr;/*本机地址信息*/structsockaddr_incli_addr;/*客户端地址信息*/charmsg[MAX_MSG_SIZE];/