博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下 socket-udp通信
阅读量:4042 次
发布时间:2019-05-24

本文共 2046 字,大约阅读时间需要 6 分钟。

UDP是无连接不可靠的数据报协议,非常不同于TCP提供的面向连接的可靠字节流。

典型的UDP客户/服务器程序,客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报。类似地,服务器不接受来自客户端地连接,而是只管调用recvfrom函数。

1. 服务器程序demo

#include 
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 4096 void dg_echo(int sockfd, struct sockaddr * pcliaddr, socklen_t clilen){ int n; socklen_t len; char mesg[MAXLINE] = {0}; for( ; ; ) { len = clilen; bzero(mesg, sizeof(mesg)); /* receive msg and send back */ n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len); printf("receive mesg %s, len = %d\n",mesg, n); sendto(sockfd, mesg, n, 0, pcliaddr, len); }}int main(int argc, char **argv){ int sockfd; struct sockaddr_in servaddr, cliaddr; /* socket init */ sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* server init & bind */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(8888); /* 16-bit TCP or UDP port number */ bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); dg_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));}

 

2. 客户端程序demo

#include 
#include
#include
#include
#include
#include
#include
#include
void dg_cli(int sockfd, const struct sockaddr *pservaddr, socklen_t servlen){ int n; char sendline[100], recvline[100 + 1]; while(fgets(sendline, 100, stdin) != NULL) { sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen); n = recvfrom(sockfd, recvline, 100, 0, NULL, NULL); recvline[n] = 0; fputs(recvline, stdout); }}int main(int argc, char* argv[]){ int sockfd; struct sockaddr_in servaddr; if(argc != 2) { printf("usage: udpcli
\n"); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(8888); inet_pton(AF_INET, argv[1], &servaddr.sin_addr); sockfd = socket(AF_INET, SOCK_DGRAM, 0); dg_cli(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); exit(0);}

 

3. 运行

转载地址:http://elldi.baihongyu.com/

你可能感兴趣的文章
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[关注大学生]大学毕业生择业:是当"鸡头"还是"凤尾"?
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>
Selenium之前世今生
查看>>
Selenium-WebDriverApi接口详解
查看>>