socket通信之 udp协议2
2016-07-18 21:32
316 查看
服务端
步骤: 1. 创建套接字 2. 绑定ip 3. 读取数据 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <unistd.h> #include <stdlib.h> #include <linux/in.h> #define SRV_PORT 9999 int main(int argc, char *argv[]) { // create a socket int srv_fd; int ret; char buf[128]; srv_fd = socket(AF_INET, SOCK_DGRAM, 0); //创建套接字 if(srv_fd < 0) { perror("socket"); exit(1); } // bind addr struct sockaddr_in self; //描述本地ip和端口的信息 self.sin_family = AF_INET; self.sin_port = htons(SRV_PORT); //self.sin_addr.s_addr = inet_addr("192.168.7.5"); //本机器的ip self.sin_addr.s_addr = htonl(INADDR_ANY); //本机器的所有ip ret = bind(srv_fd, (const struct sockaddr *)&self, sizeof(self)); //绑定ip if(ret < 0) { perror("bind"); exit(1); } struct sockaddr_in info; socklen_t len = sizeof(info); while(1) { //直接读取数据 ret = recvfrom(srv_fd, buf, 128, 0, (struct sockaddr *)&info, &len); //读取信息 if(ret < 0) { perror("read"); exit(1); } buf[ret] = '\0'; printf("from client %s (port %d) : %s\n", inet_ntoa(info.sin_addr), ntohs(info.sin_port), buf); } close(srv_fd); return 0; }
客户端
步骤: 1. 创建套接字 2. 发送信息 #include <stdio.h> #include <string.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <unistd.h> #include <stdlib.h> #include <linux/in.h> #define SRV_PORT 9999 #define SRV_IP "192.168.7.5" int main(int argc, char *argv[]) { // create socket int ret; int count = 5; //char *content = "hello server, come on baby"; char wbuf[128]; if(argc < 2) { printf("usage : ./client serverip\n"); exit(1); } int fd = socket(AF_INET, SOCK_DGRAM, 0); //创建套接字 if(fd < 0) { perror("socket"); exit(1); } struct sockaddr_in peer; peer.sin_family = AF_INET; peer.sin_port = htons(SRV_PORT); //inet_aton(SRV_IP, &peer.sin_addr); inet_aton(argv[1], &peer.sin_addr); while(1) { printf("dear, pls input your words : \n"); fgets(wbuf, 128, stdin); ret = sendto(fd, wbuf, 128, 0, (struct sockaddr *)&peer, sizeof(peer)); //发送信息 if(ret < 0) { perror("sendto"); exit(1); } } close(fd); return 0; }
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- java socket 注意的地方
- java socket 注意的地方
- C#实现子窗体与父窗体通信方法实例总结
- C#基于UDP实现的P2P语音聊天工具
- C#基于socket模拟http请求的方法
- 简单的Ruby中的Socket编程教程
- Socket不能选择本地IP连接问题如何解决
- C#之Socket操作类实例解析
- 使用C#来编写一个异步的Socket服务器
- C#基于UDP进行异步通信的方法
- C#使用Socket快速判断数据库连接是否正常的方法
- java和c#使用hessian通信的方法
- 科学知识:理解socket
- websocket++简单使用及实例分析
- 距离详解Linux下的UDP方式通讯
- win32下进程间通信(共享内存)实例分析
- Android聊天工具基于socket实现
- PHP socket 模拟POST 请求实例代码