我想使用sendto()发送视频和音频udp多播数据包,我使用getsockopt(context_data->socket,SOL_SOCKET, SO_SNDBUF, &bufsize, &size);获得发送缓冲区的大小为114688,但是实际上当我发送的数据包还不到这个值的时候(大约大于65536时就会失败),就会发送失败,返回值-1,消息为message too long. 在网上搜了一下说,出现这个错误时,应该手动设置发送缓冲区的大小为所发数据包的最大值,于是我就使用setsockopt()将发送缓冲区的...
by zhl2001xlh800 - C/C++ - 2012-03-24 23:17:55 阅读(6817) 回复(1)
小弟的Linux有两块网卡,分别连在不同子网,小弟的问题是当小弟试图向255.255.255.255发udp广播包的时候,可以成功发送,却不能接受。
小弟的代码如下:
#include
#include "unp.h" int main(int argc, char **argv) { int sockfd, on = 1; struct sockaddr_in servaddr; char ip[INET_ADDRSTRLEN]; if (argc != 2) { fprintf(stderr, "Usage: ./main \r\n"); exit(1); } if ((sockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_udp)) == -1) err_sys("socket"); if (setsock...
有个问题,我的一个朋友有个需求:
主机(AIX 433)是10.1.1.22,mask 255.255.255.192,上面用C写了一个程序,要给10.1.1.63(directed broadcast address)发udp port 为30001的包。
然后有客户端用Delphi写的程序,要可以接受这些包(client的地址是同网段的)。可是不成功。在Rh Linux的主机上这么做,客户端是可以收到包的。
在linux和aix都使用g++做的编译。
代码如下:
#include
有个问题,我的一个朋友有个需求:\r\n 主机(AIX 433)是10.1.1.22,mask 255.255.255.192,上面用C写了一个程序,要给10.1.1.63(directed broadcast address)发udp port 为30001的包。\r\n 然后有客户端用Delphi写的程序,要可以接受这些包(client的地址是同网段的)。可是不成功。在Rh Linux的主机上这么做,客户端是可以收到包的。\r\n 在linux和aix都使用g++做的编译。\r\n\r\n代码如下:\r\n\r\n#include
本帖最后由 jonas_mao 于 2013-05-15 17:22 编辑 在做设备的网卡环回测试, 都设置成功了, 发送的是一个dest_mac 为广播的64 字节的packet, 每次接收到的打印出来都是一个字符 E, 可recv 返回的结果却不止一个字节。 继上次的配置,更改了一下网卡eth0的speed = 1000, duplex = full, 现在是偶尔有报文收到,但大多数还是收不到, 麻烦各位帮下
最近在看unix网络编程,看到第20章广播这部分的时候,遇到了问题:我是用虚拟机装的linux,分别装了centos5.5 centos6.0 ubuntu11.0,我的客户端使用了udp套接字广播我的信息,如果服务端也是使用udp套接字接收到我广播信息,如果接收到的话就把我广播的信息返回给客户端(用的是单播)。 1.我的客户端运行在centos5.5上,而服务端运行在centos6.0上,当我的客户端广播信息的时候,我的服务端无法接收到广播的信息,试了很多次,没...