欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

简单的客户端,服务端通信

发布时间:2025/6/15 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 简单的客户端,服务端通信 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

client.c代码如下:

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <sys/types.h> #include <unistd.h> #define BUFLEN 10 int main(int argc, char **argv) {int sockfd;int port = 4567;struct sockaddr_in ser_addr;int len;char buf[BUFLEN];/*建立socket*/if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){printf("server socket creation error\n");return -1;}else printf("server socket success\n"); ser_addr.sin_port = htons(port);ser_addr.sin_family = AF_INET;if (inet_aton(argv[1], (struct in_addr *)&ser_addr.sin_addr.s_addr) == 0) {printf("server error\n");return -1;}/*开始连接服务器*/ if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(struct sockaddr)) == -1){perror("connect");exit(errno);}elseprintf("conncet success!\n");while(1) {/******接收消息*******/bzero(buf,BUFLEN);len = recv(sockfd,buf,BUFLEN,0);if(len > 0)printf("服务器发来的消息是:%s,共有字节数是: %d\n",buf,len-1);elseprintf("接受消息失败!\n");/******发送消息*******/ bzero(buf,BUFLEN);printf("请输入发送给对方的消息:");/*fgets函数:从流中读取BUFLEN-1个字符*/fgets(buf,BUFLEN,stdin);len = send(sockfd,buf,strlen(buf),0);if(len > 0)printf("消息发送成功,本次共发送的字节数是:%d\n",len); else{printf("聊天终止!\n");break; } }/*关闭连接*/close(sockfd);return 0; } View Code

server.c代码如下:

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <sys/types.h> #include <unistd.h> #define BUFLEN 10 int main(int argc,char **argv) { int ser_sockfd,cli_sockfd; int port = 4567; int len; // struct sockaddr_in ser_addr; struct sockaddr_in cli_addr; char buf[BUFLEN];/*建立socket*/ if ((ser_sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){printf("server socket creation error\n");return -1; }else printf("socket create success!\n");/*设置服务器ip*/ bzero(&ser_addr,sizeof(ser_addr)); ser_addr.sin_family = AF_INET;/*设置服务器端口*/ ser_addr.sin_port=htons(port); if (argv[1])ser_addr.sin_addr.s_addr = inet_addr(argv[1]);elseser_addr.sin_addr.s_addr = INADDR_ANY;/*把地址和端口帮定到套接字上*/ if (bind(ser_sockfd,(struct sockaddr*) &ser_addr,sizeof(struct sockaddr_in)) == -1){printf("server binding error\n");return -1; }elseprintf("bind success!\n");/*侦听本地端口*/ if (listen(ser_sockfd,5) == -1){printf("server listening error\n");return -1; }elseprintf("the server is listening!\n");while(1){printf("*****************聊天开始***************\n"); if ((cli_sockfd = accept(ser_sockfd,(struct sockaddr*)&cli_addr,&len)) == -1){ printf("server acception error\n");return -1; }elseprintf("正在与您聊天的客户端是:%s: %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port));while(1){/******发送消息*******/bzero(buf,BUFLEN);/*fgets函数:从流中读取BUFLEN-1个字符*/fgets(buf,BUFLEN,stdin);len = send(cli_sockfd,buf,strlen(buf),0);if(len > 0)printf("消息发送成功,本次共发送的字节数是:%d\n",len); else{printf("消息发送失败!\n");break; }/******接收消息*******/bzero(buf,BUFLEN);len = recv(cli_sockfd,buf,BUFLEN,0);if(len > 0)printf("客户端发来的信息是:%s,共有字节数是: %d\n",buf,len);else{printf("聊天终止!\n");break; }}/*关闭聊天的套接字*/close(cli_sockfd);}/*关闭服务器的套接字*/close(ser_sockfd);return 0; } View Code

 

转载于:https://www.cnblogs.com/qianboping/p/6400689.html

总结

以上是生活随笔为你收集整理的简单的客户端,服务端通信的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。