linux中C语言发送广播报文
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<sys/wait.h>
- #include<netinet/in.h>
- #include<arpa/inet.h>
- #include<errno.h>
- int main(){
- char msg[128] = "I am broadCast message from server!";
- int brdcFd;
- if((brdcFd = socket(PF_INET, SOCK_DGRAM, 0)) == -1){
- printf("socket fail\n");
- return -1;
- }
- int optval = 1;//这个值一定要设置,否则可能导致sendto()失败
- setsockopt(brdcFd, SOL_SOCKET, SO_BROADCAST | SO_REUSEADDR, &optval, sizeof(int));
- struct sockaddr_in theirAddr;
- memset(&theirAddr, 0, sizeof(struct sockaddr_in));
- theirAddr.sin_family = AF_INET;
- theirAddr.sin_addr.s_addr = inet_addr("255.255.255.255");
- theirAddr.sin_port = htons(4001);
- int sendBytes;
- if((sendBytes = sendto(brdcFd, msg, strlen(msg), 0,
- (struct sockaddr *)&theirAddr, sizeof(struct sockaddr))) == -1){
- printf("sendto fail, errno=%d\n", errno);
- return -1;
- }
- printf("msg=%s, msgLen=%d, sendBytes=%d\n", msg, strlen(msg), sendBytes);
- close(brdcFd);
- return 0;
- }
- SO_DEBUG,打开或关闭调试信息。
- SO_REUSEADDR,打开或关闭地址复用功能。
- SO_DONTROUTE,打开或关闭路由查找功能。
- SO_BROADCAST,允许或禁止发送广播数据。
- SO_SNDBUF,设置发送缓冲区的大小。
- SO_RCVBUF,设置接收缓冲区的大小。
- SO_KEEPALIVE,套接字保活。
- SO_OOBINLINE,紧急数据放入普通数据流。
- SO_NO_CHECK,打开或关闭校验和。
- SO_PRIORITY,设置在套接字发送的所有包的协议定义优先权。Linux通过这一值来排列网络队列。
- SO_LINGER,如果选择此选项, close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后>才会返回. 否则, 调用将立即返回。
- SO_PASSCRED,允许或禁止SCM_CREDENTIALS 控制消息的接收。
- SO_TIMESTAMP,打开或关闭数据报中的时间戳接收。
- SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。
- SO_RCVTIMEO,设置接收超时时间。
- SO_SNDTIMEO,设置发送超时时间。
- SO_BINDTODEVICE,将套接字绑定到一个特定的设备上。
- SO_ATTACH_FILTER和SO_DETACH_FILTER。
linux中C语言发送广播报文的更多相关文章
- 一篇详细的linux中shell语言的字符串处理
1 cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢? cut命令主要 ...
- Linux中Postfix邮件发送配置(三)
部署DNS服务器 postfix根据域名和地址做一个MX记录,A记录,PTR记录(一般在互联网上邮件服务器都要反解,没有PTR记录会认为是垃圾邮件) $ service iptables stop $ ...
- Linux中C语言的编程
编译的过程 编译的概念:编译程序读取源程序(字符流),对之进行词法与语法的分析,将高级语言指令转换成功能等效的汇编代码,再由汇编程序转换成机器语言,并且按照操作系统对可执行文件格式的要求链接成可执行程 ...
- linux 中C语言便于调试的宏定义编写及 __FILE__,__FUNCTION__, __LINE__参数使用
转自:http://blog.csdn.net/edonlii/article/details/8491342/ 在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难.因此在程序中加 ...
- linux中c语言编程main函数和参数
linux下main函数的的标准调用函数的标准形式 int main(int char,char *argv[]) 在main函数的两个参数中,argc必须是整型变量,其是命令行的参数的数目,argv ...
- Linux中的邮件发送
这里写出两种常用的邮件发送方式: mail: 需要安装sendmail和postfix两个服务 编辑/etc/mail.rc,在最后添加 set from=scottcho@126.com smtp= ...
- linux中C语言的运行(gcc)
执行sudo apt-get install build-essential 出现
- linux中C的静态库和动态库分析
从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...
- Linux中处理需要传输的IP报文流程
本文主要讲解了Linux中处理需要传输的IP报文流程,使用的内核的版本是2.6.32.27 为了方便理解,本文采用整体流程图加伪代码的方式对Linux中处理需要传输的IP报文流程进行了讲解,希望可以对 ...
随机推荐
- java-JProfiler(二)-进行本地JVM的性能监控-tomcat
监视本地的Tomcat, 看似是本地,其实JProfiler GUI在一个单独的JVM里启动,他与被监视的目标jvm之间通过socket通讯,目的为了不干扰目标JVM.所以监视本地Tomcat与监视远 ...
- Unity注意事项
1.尽量避免出现中文路径 2.做2D游戏时,图片最好要与背景图片保持一定距离 以免重叠
- [py][mx]django城市-教学机构-教师模型设计
分析下城市-教学机构-教师模型设计 CourseOrg 课程信息 Teacher 教师信息 CityDict 城市信息 代码 from datetime import datetime from dj ...
- volatile的语义与实现
1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修 ...
- IN的另类写法
EXPLAIN SELECT * FROM `tcb_capital_log` WHERE id IN(66,79,47) EXPLAIN SELECT * FROM ( SELECT 66 AS i ...
- Hdu dp
4856 这题说的是给了一个图 这个图有很多的隧道每个隧道是单向的 只能从一个入口进入从另一个入口出来 要求计算出走完这些隧道花的总时间 因为这个图是一个网格行的然后 先用bfs算出隧道的出口到每个隧 ...
- Linux其他:环境变量配置
计算机==>右键==>属性==>高级系统设置==>环境变量==> 系统变量path后面+';python路径名
- linux服务器---配置samba
配置samba使用用户名和密码登录 1.当samba配置文件中的secure设置为user的时候,需要正确的用户名和密码才能登录. root@localhost /]#gedit /etc/samba ...
- mysql删除有外链索引数据,Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法
mysql删除有外链索引数据Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法查询:DELETE ...
- Python3.x:关于urllib中urlopen报错问题的解决方案
Python3.x:关于urllib中urlopen报错问题的解决方案 调用:urllib.urlopen(url) 报错:AttributeError: 'module' object has no ...