linux下c编程之UDP
2016-05-03 14:27
645 查看
1、服务器端
创建socket。绑定服务器端口和IP。
接收数据、发送数据。发送数据需要根据接收数据的地址或者自己指定发送地址。
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { int sockfd,tmplen; struct sockaddr_in saddr,caddr; char *sndata,buf[1024]; tmplen = sizeof(struct sockaddr_in); //create socket if((sockfd=socket(AF_INET,SOCK_DGRAM,0)) == -1) exit(0); //init ip and port saddr.sin_family = AF_INET; saddr.sin_port = htons(8888); saddr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(sockfd,(struct sockaddr *)(&saddr),tmplen) == -1) exit(0); while(1) { recvfrom(sockfd,buf,1024,0,(struct sockaddr *)(&caddr),&tmplen); //printf("%s\n",buf); sndata = inet_ntoa(caddr.sin_addr); sendto(sockfd,sndata,strlen(sndata),0,(struct sockaddr *)(&caddr),tmplen); } return 0; }
2、客户端
创建socket。指定服务器地址和端口。
收发数据。
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { int sockfd,tmplen; struct sockaddr_in saddr,caddr; char buf[1024]; tmplen = sizeof(struct sockaddr_in); //create socket if((sockfd=socket(AF_INET,SOCK_DGRAM,0)) == -1) exit(0); //init ip and port saddr.sin_family = AF_INET; saddr.sin_port = htons(8888); saddr.sin_addr.s_addr = inet_addr("127.0.0.1"); sendto(sockfd,"hello",5,0,(struct sockaddr *)(&saddr),tmplen); recvfrom(sockfd,buf,1024,0,(struct sockaddr *)(&saddr),&tmplen); printf("%s\n",buf); return 0; }
3、注意事项
tmplen = sizeof(struct sockaddr_in);sendto(sockfd,"hello",5,0,(struct sockaddr *)(&saddr),tmplen);
recvfrom(sockfd,buf,1024,0,(struct sockaddr *)(&saddr),&tmplen);//黑体处的区别
socket(AF_INET,SOCK_DGRAM,0)//黑体处与TCP通信的SOCK_STREAM的区别
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- 如何组织构建多文件 C 语言程序(二)
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程