19---- Socket options
来源:互联网 发布:2017网络彩票最新消息 编辑:程序博客网 时间:2024/06/09 16:50
SOCKET 的一些选项的设置
通用选项: //// 可以通过 man 7 socket
SOL_SCKET:
SO_BROADCAST ---- 广播
SO_RCVBUF ----描述符号的发送缓冲大小
SO_SNDBUF -----描述符号的接收缓冲大小
SO_REUCSADDR -----地址反复绑定
SO_TYPE -----描述符号类型SOCK_STREAM(流)/SOCK_DGRAM(报文)
其他选项可以通过一下方式获取:
——————————————————————
$ man 7 socket --------------- socket选项
$ man 7 icmp ---------------icmp选项
$ man 7 ip --------------- ip选项
$ man 7 udp --------------- udp选项
$ man 7 tcp ---------------- tcp选项
—————————————————————
案例:
使用选项进行数据广播
case_A 发送
建立socket
设置广播选项
发送数据(广播方式发送)
case_B 接收
建立socket
绑定地址
接收数据
广播程序:
/// case_A.c #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>main(){int fd;int opt=1;int r;struct sockaddr_in dr;//1. 选项设置fd = socket(AF_INET,SOCK_DGRAM,0);// AF_INET和PF_INET在这里都是一样的效果if(fd==-1) printf("socket err:%m\n"),exit(-1);r = setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&opt,sizeof(opt));if(r==-1) printf("setsockopt err:%m\n"),exit(-1);dr.sin_family = AF_INET;dr.sin_port = htons(8888);// 2. 使用广播IP地址dr.sin_addr.s_addr = inet_addr("120.6.111.255");r = sendto(fd,"I am MT",strlen("I am MT"),0,(struct sockaddr*)&dr,sizeof(dr));if(r==-1) printf("sento err:%m\n"),exit(-1);close(fd);}
// case_B.c #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>main(){int fd;int opt =1;char buf[100];int r;struct sockaddr_in dr;fd = socket(AF_INET,SOCK_DGRAM,0);if(fd == -1) printf("socket err:%m\n"),exit(-1);// 1. 选项r = setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));if(r==-1) printf("setsockopt err:%m\n"),exit(-1);dr.sin_family = AF_INET;dr.sin_port = htons(8888);// 2. 广播地址dr.sin_addr.s_addr = inet_addr("120.6.111.255");r = bind(fd,(struct sockaddr*)&dr,sizeof(dr));if(r==-1) printf("bind err:%m\n"),exit(-1);r = recv(fd,buf,100,0);if(r >0){buf[r] = 0;printf("广播数据:%s\n",buf);}close(fd);}
- 19---- Socket options
- socket options
- Socket Options
- Socket Options
- Socket Configuration Options
- IP-level Socket Options
- 7-Socket Options
- 如何查看socket options
- socket ioctl socket options struct ifreq; struct ifconf
- options
- Options
- options
- OPTIONS
- options
- options
- Java Notes-14(DateAtHost Client, TinyHttpd Server, Socket Options)
- INFO: Header and Library Requirement When Set/Get Socket Options at the IPPROTO_IP Level
- var options = options || {};
- android刷新
- ubuntu使用ssh连接远程电脑的方法
- 依赖于规范轻易的适应终端宽度
- Linux下PS命令详解
- ArcGIS Server + ArcSDE + PostgreSQL + ArcMap安装(windows7)
- 19---- Socket options
- Boost下载安装编译配置使用指南(含Windows、Linux以及ARM Linux)
- fio测试
- mongoDB非正常关闭后无法启动问题
- VC下编程实现网络驱动器的映射
- javascript通过选择器获取标签的内容的方法
- VC下编程实现网络驱动器的映射
- 两个ubuntu系统之间基于SSH服务的文件拷贝
- 断言(ASSERT)的用法