网络编程——UDP编程
2024-08-26 15:26:49
一个简单的聊天代码:运行结果:
在这个程序之中,由于recvfrom函数拥塞函数,没有数据时会一直阻塞,所以客户端和服务器端只能通过一回一答的方式进行信息传递。严格的讲UDP没有明确的客户端和服务端,谁先进行数据传输,谁就是客户端,客户端也有可能是服务器端。
代码1:
#include"common.h" int main()
{
int fd;int saddr_len;
int ret;
char buf[];
struct sockaddr_in saddr; fd = socket(AF_INET, SOCK_DGRAM, );
if(fd < )
{
printf("create socket fail!\n");
return -;
} saddr.sin_family=AF_INET;
saddr.sin_port=htons();
inet_pton(AF_INET,"192.168.6.128",&saddr.sin_addr.s_addr); while()
{
printf("cli:");
gets(buf);
ret=sendto(fd,buf,,,(struct sockaddr*)&saddr,sizeof(saddr)); saddr_len=sizeof(saddr);
recvfrom(fd,buf,,,(struct sockaddr*)&saddr,&saddr_len);
printf("ser:%s\n",buf);
} close(fd); return ;
}
代码2:
#include"common.h" int main()
{
int fd;
int ret;
int addr_len;
struct sockaddr_in saddr,caddr;
char buf[]; fd=socket(AF_INET,SOCK_DGRAM,);
if(fd<)
{
perror("socket");
}
saddr.sin_family=AF_INET;
saddr.sin_port=htons();
inet_pton(AF_INET,"192.168.6.128",&saddr.sin_addr.s_addr); ret=bind(fd,(struct sockaddr*)&saddr,sizeof(saddr));
if (ret<)
{
perror("bind");
} addr_len=sizeof(caddr);
while()
{ ret=recvfrom(fd,buf,,,(struct sockaddr*)&caddr,&addr_len);
if(ret==-)
{
perror("cecvfrom");
} printf("cli:%s\n",buf);
printf("ser:");
gets(buf);
sendto(fd,buf,,,(struct sockaddr*)&caddr,sizeof(caddr)); }
close(fd);
return ;
}
最新文章
- Python类的实例属性详解
- 分享到QQ空间代码(一)
- PowerDesigner如何自定义报表模板
- 关于css中透明度继承的问题
- SVN—patch的应用
- Tiny Spring 分析一
- 下拉的DIV+CSS+JS二级树型菜单
- Jason Wang:记录自己所想所得(第一次作业)
- Mac 下GitHub 访问慢解决方案
- 小程序radio样式修改
- [python,2018-06-29] 37%法则及其拓展解决恋爱问题
- fiddler 笔记-重定向
- css文本属性用法总结
- vue权威指南笔记01——样式的设置
- python学习: 优秀Python学习资源收集汇总--转
- Eclipse 使用 VS快捷键
- OpenACC 优化矩阵乘法
- 【转】MEF程序设计指南四:使用MEF声明导出(Exports)与导入(Imports)
- JS获取元素内容属性以及修改
- Ganglia开源集群监视项目