Linux UDP socket编程(UDP通讯模型):

UDPClient + UDPService。

Linux下大多数网络程序都是基于TCP的,很少基于UDP,简单的通讯模型如下,开发时候备用!

udpService:

[cpp]

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define SERVER_PORT 2222

#define MAX_SIZE 1024

void UDP_answer(int sockfd)

{

struct sockaddr_in addr;

int i,n;

unsigned int addrlen;

char msg[MAX_SIZE];

while(1)

{

n=recvfrom(sockfd,msg,MAX_SIZE,0,(struct sockaddr *)&addr,&addrlen);

msg[n]=0;

fprintf(stdout,"i have received %s",msg);

n=strlen(msg);

for(i=0;i

msg[i]=toupper(msg[i]);

sendto(sockfd,msg,n,0,(struct sockaddr *)&addr,addrlen);

}

}

int main(void)

{

int sockfd;

struct sockaddr_in addr;

sockfd=socket(AF_INET,SOCK_DGRAM,0);

bzero(&addr,sizeof(struct sockaddr_in));

addr.sin_family=AF_INET;

addr.sin_addr.s_addr=htonl(INADDR_ANY);

addr.sin_port=htons(SERVER_PORT);

if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr_in))<0)

{

perror("bind");

exit(1);

}

UDP_answer(sockfd);

close(sockfd);

return 0;

}

[/cpp]

udpClient:

[cpp]

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define MAX_SIZE 1024

void UDP_ask(int sockfd,const struct sockaddr_in *addr,int len)

{

char buf[MAX_SIZE];

int n;

while(1)

{

fgets(buf,MAX_SIZE,stdin);//input from keyboard to service

sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)addr,len);

printf("i have sent to server %s",buf);

printf("Waiting answer from server\n");

bzero(buf,MAX_SIZE);

n=recvfrom(sockfd,buf,MAX_SIZE,0,NULL,NULL);

buf[n]=0;

printf("i have received from server");

fputs(buf,stdout);

printf("\n");

}

}

int main(int argc,char **argv)

{

int sockfd,port;

struct sockaddr_in addr;

if(argc!=3){

fprintf(stderr,"Usage:%s sercer_ip server_port\n",argv[0]);

exit(1);

}

if((port=atoi(argv[2]))<0){

fprintf(stderr,"Usage:%s server_ip server_port\n",argv[0]);

exit(1);

}

sockfd=socket(AF_INET,SOCK_DGRAM,0);

bzero(&addr,sizeof(struct sockaddr_in));

addr.sin_family=AF_INET;

addr.sin_port=htons(port);

if(inet_aton(argv[1],&addr.sin_addr)<0){

fprintf(stderr,"Ip error:%s\n",strerror(errno));

exit(1);

}

UDP_ask(sockfd,&addr,sizeof(struct sockaddr_in));

close(sockfd);

return 0;

}

[/cpp]

运行结果如下:

服务器在后台运行:./udpservice &

回显来自客服端的消息:略(ps可以查看后台进程PID)

客服端:

[cpp]

[root@localhost lab]# ./udpclient 127.0.0.1 2222

cplusplus

i have sent to server cplusplus

Waiting answer from server

i have received from serverCPLUSPLUS

hellowolrld

i have sent to server hellowolrld

Waiting answer from server

i have received from serverHELLOWOLRLD

[/cpp]

linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家相关推荐

  1. Linux系统下一切皆文件,socket编程浅析

    "一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...

  2. c语言广播程序,C语言socket编程---udp通信及广播

    上篇实现了TCP通信的例子.由于项目中需要一个服务器向多台客户端发送消息. 通过udp这种无连接的通信,将client.c增加一句 /* 设置通讯方式对广播,即本程序发送的一个消息,网络上所有主机均可 ...

  3. Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(三)

    七.可靠性UDP的优化细节 4.5章节中,我们提到了KCP本身的优化提高,由于可靠性UDP是这个方案是否优秀的关键,而各种可靠UDP协议中都有TCP算法的影子,所以下面我们再仔细的谈一下这个部分.按照 ...

  4. linux系统charp命令,操作系统 Linux系统

    Linux操作系统 预备知识(Operating System): 1.GNU项目,GNU项目是一个自由软件项目,旨在建立一个完全自由开放通用的UNIX软件平台. 2.操作系统:管理计算机硬件和软件资 ...

  5. TCP/IP网络编程---Linux系统下的TCP套接字编程

    目录 第一章 理解网络编程和套接字 1.1 网络编程和套接字概要 1.2 基于Linux的文件操作 1.2.1 底层文件访问和文件描述符 1.2.2 打开文件 1.2.3 关闭文件 1.2.4 将数据 ...

  6. UDP通信——使用python实现简单的UDP通信

    UDP通信--使用python实现简单的UDP通信 UDP 的英文单词是User Datagram Protocol,缩写为UDP,是一种用户数据报协议,又称为用户数据报文协议,是一种报文的协议,是一 ...

  7. php 登录 linux服务器,如何实现linux系统远程登录到linux服务器

    linux系统登录到远程linux服务器: 有多种不同的协议可供选择,也许SSH是"最好"的.SSH是secure shell的简写,意为"安全的shell". ...

  8. Linux系统磁状态检测,检测Linux硬件状态

    计算机系统是由软件系统和硬件系统共同组成的.检测硬件状态对于保障整个系统的稳定是非常重要的.不论操作系统是使用Linux.还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了.这里我们主要 ...

  9. Linux系统-小倒腾之Linux DIY定制裁剪(New kernel+Busybox)o_o(二)

    在前面的<Linux系统-小倒腾之Linux DIY定制裁剪(附带简单网络功能)o_o(一)>博文中,我通过对一个Linux系统的裁剪,最终制作出来了一个带有网络功能的微型Linux系统; ...

最新文章

  1. python中文件读写位置的作用-Python中文件的读写
  2. APP技巧:微信中这6个设置建议关闭,可以防止个人信息或将全暴露,赶快看一看吧!...
  3. java读取src xml文件路径_Java获取路径方法相对路径读取xml文件方法
  4. PHP stomp 连接判断,php实现通过stomp协议连接ActiveMQ操作示例
  5. 黑客必须掌握的基本技能
  6. hive 的 left semi join 讲解与left jion的区别
  7. Python入门--列表,字典,元组,集合总结
  8. apktook 反编译错误
  9. python创建员工_Python综合练习之创建员工信息表
  10. Java中的Filter过滤器
  11. DS18B20引脚 实物引脚 (千万不要接反啊)
  12. arduino as5048工作原理_普通精度应用的另一种选择——磁性旋转编码器
  13. 【软件定义汽车】【场景篇】智能座舱
  14. MySQL中的“DATE_SUB()” 函数从日期减去指定的时间间隔
  15. 这款文件传输软件每隔10秒就会发起文件同步——镭速传输
  16. seata(二) 分布式事务框架seata1.3 AT及XA模式实例演示
  17. 青藤 #10115 栈练习1
  18. 关于谷歌中国的最新声明
  19. linux下的elf结构,ELF结构详细分析(1)---elf32_hdr
  20. 手机音视频应用开发前景

热门文章

  1. 多继承中构造器和析构器的调用顺序
  2. SQLServer 游标简介与使用说明[转]
  3. Requests请求库
  4. VMware ESXi 安装手记
  5. C# 温故知新 基础篇(7) 接口思维导图
  6. html5 app开发重大消息-腾讯在技术端推进Html5生态发展
  7. Ruby Shanghai 2014年终聚会总结
  8. SHELL相关的特殊字符总结
  9. WayOs路由器WAN口帐号保存工具,可直接发送至邮箱,及保存接口VLAN号
  10. Go语言中查询SqlServer数据库