77-Unix 域数据报回射服务器
来源:互联网 发布:cheat engine源码 编辑:程序博客网 时间:2024/05/21 00:52
同样的,这个程序根据之前的 UDP 回射服务器改写。
1. 程序路径
程序路径:
git clone https://git.oschina.net/ivan_allen/unp.git
如果你已经 clone 过这个代码了,请使用 git pull
更新一下。本节程序所使用的程序路径是 unp/program/unixdomainprotocols/echo_datagram
.
2. 伪代码
- 服务器
void server_routine() { int ret, sockfd; struct sockaddr_un servaddr, cliaddr; socklen_t len; resolve(g_option.path, &servaddr, &len); // 创建数据报套接字,注意第二个参数 sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0); unlink(g_option.path); ret = bind(sockfd, (struct sockaddr*)&servaddr, len); doServer(sockfd); close(sockfd); }
- 客户端
void client_routine() { int sockfd, ret; struct sockaddr_un cliaddr; socklen_t len; // tmpnam 函数用于生成一个随机文件路径 resolve(tmpnam(NULL), &cliaddr, &len); sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0); // 注意,客户端也必须要绑定套接字地址,否则的话,服务器的 recvfrom 函数就得不到客户端的应答路径。 ret = bind(sockfd, (struct sockaddr*)&cliaddr, len); doClient(sockfd); close(sockfd);}
在上面的注释中,已经提到了客户端必须要显式的绑定一个路径名,如果省略这一步,服务器的 recvfrom 将返回一个空路径名。
3. 实验结果
图1 左侧是服务器,右侧是客户端
图2 netstat 输出
图 1 中的服务器输出的路径名,是客户端所绑定的地址,该路径是使用 tmpnam 函数生成的。
4. 总结
- 知道客户端也需要显式绑定套接字地址
0 0
- 77-Unix 域数据报回射服务器
- 75-Unix 域字节流回射服务器
- unix服务器安全策略
- unix服务器安全策略
- 免费Unix&LInux服务器
- unix服务器服务
- Understanding Unix/Linux Programming 笔记:chapter 13:基于数据报(Datagram)的编程:编写许可证服务器
- UNIX域嵌套字 ——服务器的实现
- unix 线程私有数据
- HP UNIX 配置域名服务器
- 提升Unix服务器的资源利用率
- unix-center的服务器分布
- linux和unix时钟服务器
- loadrunner监控ubuntu/unix服务器
- 查看UNIX服务器网关配置
- UNIX的守护进程(服务器)
- 数据服务器/平台服务器
- Oracle unix下备份数据
- Spatial Pyramid Pooling
- 用 GStreamer 简化 Linux 多媒体开发
- Python——模块
- NITc语言作业 图书管理系统
- 引用于指针的区别
- 77-Unix 域数据报回射服务器
- 微信公众号开发--spring HandlerInterceptor的使用
- java实现动态验证码源代码——接受ajax的jsp
- 编程练习(第十一周)
- Java IO文件读写
- code[vs] 1010过河卒(棋盘型dp)
- 在 Linux 虚拟机中手动安装或升级 VMware Tools以及Searching for a valid kernel header path... The path "" is not val
- 416. Partition Equal Subset Sum
- 在茫茫人海中找到一位大神,和蔼亲切型,你确定不来看看!