郁闷了几天,终于弄了出来,现在已经能发送广播了。 #include #include #include #include #include #include #include #include #include #include #include #include #include #define PORT 7773 #define MAXDATASIZE 256 int main(int argc,char *argv[]) { int socket_fd; struct sockaddr_in my_addr,user_addr; char buf[MAXDATASIZE]; int so_broadcast=1; socklen_t size; char my_ip[12]; ...
by niutao.linux - Linux文档专区 - 2008-07-14 13:39:50 阅读(833) 回复(0)
正在学习linux socket ,用的是《linux socket Programming》这本书。里面有一段UDP广播的程序
如下:
/*服务器程序,用来发送广播包,模拟股市信息*/
#include
创建一个socket,bind到本机地址+某端口,这样是不是只能接收单播包,不能接收广播包了? 为什么我设置static int so_broadcast = 1; setsockopt(sockfd1, SOL_socket, SO_BROADCAST,&so_broadcast, sizeof(so_broadcast)); 之后只能接收单播包不能接收广播包? 怎么实现两者都能接收呢?是不是不bind本地地址和端口就可以?
我写了个程序,实现广播通信,可是我客户端发送数据后,服务器不能收到,为什么阿: server: struct dhcpmessage{ u_int32_t xid; u_int8_t chaddr[16]; }; struct udp_dhcp_packet { struct iphdr ip; struct udphdr udp; struct dhcpmessage data; }; /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // // ...
本人想局域网通信软件,现在要实现如下功能: 服务器向局域网发一个广播(固定端口例如5555),客户机收到广播后给服务器返回消息, 想问一下,服务器怎样得到所有收到广播包的客户机的IP地址和主机名,并将其写入一个文件或数组? 谢谢 在线等答案
自己用如下代码创建了raw socket,可以获取发给本机ip地址的ip包,但无法获取广播包,想请教下该怎么才能得到发给255.255.255.255的ip包。 /* * 创建获取网卡数据的套接字 */ eth_t *eth_open(const char *device) { eth_t *e; int n; struct packet_mreq mr; if ((e = MALLOC(sizeof(eth_t))) != NULL) { MEMSET(e, 0, sizeof(eth_t)); if ((e->fd = socket(P...
自己用如下代码创建了raw socket,可以获取发给本机ip地址的ip包,但无法获取广播包,想请教下该怎么才能得到发给255.255.255.255的ip包。\r\n/*\r\n* 创建获取网卡数据的套接字\r\n*/\r\neth_t *eth_open(const char *device)\r\n{\r\n eth_t *e;\r\n int n;\r\n struct packet_mreq mr;\r\n\r\n if ((e = MALLOC(sizeof(eth_t))) != NULL) {\r\n MEMSET(e, 0, sizeof(eth_t));\r\n ...
#include #include #include #include #include #include #include #include #define GSMD_UNIX_socket_TYPE SOCK_STREAM #define GSMD_UNIX_socket "\0gsmd" 服务器端: int usock_init(struct gsmd *g) { struct sockaddr_un sun; int fd, rc; __ucmd_ctx = talloc_named_const(gsmd_tallocs, 1, "ucmd"); __gu_ctx = talloc_named_const(gsmd_tallocs, 1, "gsmd_user"); fd = socket(PF_UNIX, G...
由于考虑到我的程序要在多网卡的机器上运行,所以我将网卡的ip地址绑定到了socket server_addr.sin_addr.s_addr = inet_addr(servIP); 但是这样就无法收到广播数据? 请问是为什么?