如何在局域网中广播信息?
如题,我想写个C/S模式的程序,客户端在局域网中广播信息,然后服务器能接收到这个广播信息,请问应该用TCP还是UDP啊,地址应该怎么分配,我现在的程序,配好服务器地址可以通信,但是用.255的就无法连接。
大侠们能不能稍微说说广播信息跟一般的socket通信有什么区别啊? 就是知道某服务器的IP地址通信,与不知道服务器IP地址需要广播信息之间的区别。
[解决办法]
发送端: //要发送广播,遵循以下3个步骤: //1: //设置有效SO_BROADCAST选项,允许在m_sendSocket上发送广播信息 BOOL bBroadcast=TRUE; setsockopt(m_sendSocket,SOL_SOCKET,SO_BROADCAST, (char*)&bBroadcas, sizeof(bBroadcast)); //2: //设定目的地址和端口(即广播的地址,和广播频率) m_bcastAddr.sin_family = AF_INET; m_bcastAddr.sin_addr.s_addr=inet_addr("255.255.255.255"); //本局域网内广播地址 m_bcastAddr.sin_port = htons(m_bcastPort);、 //只要局域网内接收进程调整到该频率(本处m_bcastPort),就可以接收消息 //3:发送消息 if(sendto(m_sendSocket,buff,sizeof(buff),0,(LPSOCKADDR)&m_bcastAddr, sizeof(m_bcastAddr)) == SOCKET_ERROR)
[解决办法]
接收端:
//绑定一个本地地址,指明广播端口 SOCKADDR_IN local; local.sin_family=AF_INET; local.sin_addr.S_un.S_addr=INADDR_ANY; local.sin_port=htons(pDlg->m_bcastPort); bind(RecvSocket,(sockaddr*)&local,sizeof(local)); recvfrom(RecvSocket,buff,sizeof(buff),0,(sockaddr *)&addrRemote,&nlen)