c语言实现简单的udp传输( c/s 模型)
来源:互联网 发布:mysql启动命令 编辑:程序博客网 时间:2024/04/30 06:12
客户端代码:
/*client.c*/#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <arpa/inet.h>#define MAXBUF 256int main(int argc, char const *argv[]){int s = 0;int n = 0;int reuse = 1;int port = 1987;struct sockaddr_in srv;char buf[MAXBUF] = {0};/*解析参数*/if (argc != 2){printf("Usage:%s ServerIP\n", argv[0]);return -1;}bzero(&srv, sizeof(srv));srv.sin_family = PF_INET;srv.sin_addr.s_addr = inet_addr(argv[1]);srv.sin_port = htons(port);/*创建 UDP 套节字*/s = socket(AF_INET, SOCK_DGRAM, 0);if(s<0){perror("socket");return -1;}while(1){memset(buf, 0, MAXBUF);/*读取用户输入到buf中*/fgets(buf, MAXBUF, stdin);/*通过套节字 s 向服务器发送数据*/if ((n = sendto(s, buf, strlen(buf), 0, (struct sockaddr *) &srv, sizeof(struct sockaddr))) < 0){perror("sendto");return -1;}else{printf("send to %s(port=%d) len %d:%s\n", argv[1], port, n, buf);}}}
服务器端代码:
/*server.c*/#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <arpa/inet.h>#define MAXBUF 256int main(int argc, char const *argv[]){int s = 0;int n = 0;int reuse = 1;int cli_len = sizeof(struct sockaddr);int port = 1987;char buf[MAXBUF] = {0};struct sockaddr_in addr, cli;/*初始化本地监听端口信息*/bzero(&addr, sizeof(addr));addr.sin_family = PF_INET;addr.sin_addr.s_addr = INADDR_ANY;addr.sin_port = htons(port);/*创建UDP套节字*/s = socket(AF_INET, SOCK_DGRAM, 0);if (s<0){perror("socket");return -1;}/*允许端口复用*/setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));/*绑定指定端口*/if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0){perror("bind");return -1;}while(1){memset(buf, 0, MAXBUF);/*从套节字s中读取数据*/n = recvfrom(s, buf, MAXBUF, 0, (struct sockaddr *)&cli, &cli_len);if(n<0){perror("recvfrom");return -1;}else{printf("receive msg from %s(port=%d) len %d: %s\n",inet_ntoa(cli.sin_addr), port, n, buf);}}return 0;}编译命令:
客户端:
gcc client.c -o client./client 127.0.0.1
服务端:
gcc server.c -o server./server
0 0
- c语言实现简单的udp传输( c/s 模型)
- [C语言]基于UDP的基本C/S模型
- TCP&UDP C/S在linux上的简单实现
- c语言 Linux UDP传输
- C/S模型---UDP方式
- C udp实现c/s
- Linux下C语言实现简单的udp通信
- C语言实现简单UDP协议服务端
- UDP传输系统——C语言实现
- C实现简单TCP的C/S模型(Linux & Mac OS系统)
- socket编程 -- 基于UDP协议的C/S通信模型及实现
- TCP/IP与UDP 的C/S 模型
- Windows下简单的C语言服务器(UDP)
- 最简单的socket c/s模型
- C语言实现的http传输协议
- 基于C/S模型的java实现
- [C语言]基于TCP的基本C/S模型
- 基于UDP的C/S网络编程模型(使用sendto和recvfrom函数)
- 环回地址的介绍
- MFC中使用ADO访问Oracle数据库
- python下setuptools安装
- 让人迷惑的Custom Draw与Owner draw
- 足球课的意外收获
- c语言实现简单的udp传输( c/s 模型)
- putty连接到centos的open ss server
- Linux kernel source build error
- sqlite3出错
- PHP中用set_time_limit(0)长连接的实现
- 不用加减乘除实现加法运算
- VS之Excel文件操作
- java中把对象转成xml(用JDK实现)
- UDP、广播、多播与IGMP(七)