Linux网络程序设计之基于TCP协议
基于TCP协议实现服务器程序和客户端程序,要求:
服务器程序等待客户端连接,建立连接后,打印客户端IP地址和端口到屏幕,打印客户端请求的内容到屏幕,统计客户端请求的字节数并发送给客户端;
客户端连接服务器,向服务器发送任意请求内容,接收服务器的相应内容,并打印到屏幕。
//服务器端 #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #define PORT 6666 int main() { int sockfd; int new_fd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; char buffer[1024]; int nByte; int sin_size; //创建套接字 if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { printf("create socket error!"); exit(1); } //设置要绑定的变量 bzero(&server_addr,sizeof(struct sockaddr_in)); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(PORT); server_addr.sin_addr.s_addr=htonl(INADDR_ANY); //绑定地址 bind(sockfd,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr)); //监听端口 listen(sockfd,5); while(1) { //等待连接 sin_size=sizeof(struct sockaddr); new_fd=accept(sockfd,(struct sockaddr*)(&client_addr),&sin_size); printf("server get connection from %s:%d\n",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port)); //接收数据 nByte=recv(new_fd,buffer,1024,0); char s[20]; sprintf_s(s,"%d",nByte);s[19]='\0'; send(new_fd,s,strlen(s),0); close(new_fd); } close(sock_fd); return 0; } //客户端 #include<stdio.h> #include<string.h> #include<sys/socket.h> #include<netinet/in.h> #define PORT 6666 int main() { struct sockaddr_in server_addr; char buffer[128]; //创建套接字 int sockfd; if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { printf("create socket error!"); exit(1); } //设置要连接的服务器的地址 bzero(&server_addr,sizeof(struct sockaddr_in)); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(PORT); server_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); //连接服务器 if(connnet(sockfd,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr))==-1) { printf("connnet error!\n"); exit(1); } //发送数据到服务器 printf("please input char:\n"); fgets(buffer,128,stdin); send(sockfd,buffer,strlen(buffer),0); nByte=recv(new_fd,buffer,128,0); buffer[nByte]='\0'; printf("send %s byte!\n",buffer); //关闭连接 close(sockfd); return 0; }
编写基于TCP的server.c和client.c程序,要求使用recvmsg()和sendmsg()函数实现通信,通信内容可以自己定义。
posted on 2020-05-06 21:25 BUTTERSCOTCH 阅读(327) 评论(0) 编辑 收藏 举报