简单的客户端,服务端通信
来源:互联网 发布:保险网络增员话术 编辑:程序博客网 时间:2024/04/30 18:23
client.c代码如下:View CodeView Code
#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 10int 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); }else printf("conncet success!\n"); while(1){ /******接收消息*******/ bzero(buf,BUFLEN); len = recv(sockfd,buf,BUFLEN,0); if(len > 0) printf("服务器发来的消息是:%s,共有字节数是: %d\n",buf,len-1); else printf("接受消息失败!\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;}
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 10int 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;}elseprintf("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]); else ser_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;}else printf("bind success!\n");/*侦听本地端口*/if (listen(ser_sockfd,5) == -1){ printf("server listening error\n"); return -1;}else printf("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;}else printf("正在与您聊天的客户端是:%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;}
0 0
- 简单的客户端,服务端通信
- 简单的Socket通信客户端和服务端
- 客户端和服务端通信的简单小案列
- 简单的服务端与客户端通信代码
- 使用简单的ServiceSockt实现服务端与客户端的通信
- C# SOCKET编写的简单聊天通信程序(客户端+服务端)
- Java简单实现UDP服务端和客户端的通信
- Socket TCP 协议实现服务端和客户端的简单通信
- grpc-简单的客户端服务端通信(1)
- nodejs socket实现的服务端和客户端简单通信
- JAVA 服务端和客户端Socket通信的简单例子
- socket ( java ) 简单客户端、服务端通信
- 怎样实行客户端和服务端的通信
- TCP的客户端和服务端通信
- 基于服务端和客户端之间的通信
- Netty实现客户端和服务端的通信
- 客户端与服务端的Socket通信
- socket客户端与服务端的通信
- pandas基础使用
- Codevs 1337 银行里的迷宫
- keras简单介绍与使用
- Java内部类
- 二叉树遍历
- 简单的客户端,服务端通信
- 【数据压缩】调用VFW库对无压缩avi的解封装
- 线程创建
- Linux 链接脚本分析
- 新三板挂牌条件是什么?
- JZOJ 3731. 【NOIP2014模拟7.10】庐州月
- C#定时程序
- ASP页面添加打印按钮
- python中类的基本使用