想做多个线程同时接收组播组中的数据,怎么办 各位大侠,想做多个线程同时接收组播组中的数据,怎么办? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 线程函数中这么写就可以了SOCKET s = socket(AF_INET, SOCK_DGRAM, 0);if(INVALID_SOCKET == s){ // Error; return 1;}BOOL bReuse = TRUE;setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&bReuse, sizeof(BOOL));SOCKADDR_IN si;si.sin_family = AF_INET;si.sin_port = ntohs(4567+nIndex); // 这里的nIndex为线程的索引号si.sin_addr.S_un.S_addr = INADDR_ANY;if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&si, sizeof(si)){ // Error; closesocket(s); return 1;}ip_mreq mcase;mcast.imr_interface.S_un.S_addr = INADDR_ANY;mcast.imr_multiaddr.S_un.S_addr = inet_addr("234.5.6.7"); // 这里是你的多播地址setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mcast, sizeof(mcast));printf("recv data ...\n");char buf[1024] = {0};int nAddLen = sizeof(si);while(TRUE){ if(SOCKET_ERROR == recvfrom(s, buf, 1024, 0, (LPSOCKADDR)&si, &nAddrLen)) { // ERROR; closesocket(s); break; } else { printf("recv data: %s\n", buf); }} 各位大虾,怎样用msdn查看directx帮助文档 ComBox控件DropList下的付值. 请问如何把一个结构体复制到buffer中?谢谢 突然想到的在控制台下的一个问题? 关于注释的问题,如何注释掉一段代码? VB调用DLL的问题,请教各位! VC下关于debug和release的不同的讨论 怎样使鼠标停留在位图按钮上(不按下去)变换图片,请高手能写下代码 如何通过ID得到控键的指针? 文件结束符具体是什么东东? 网络编程问题? 请问各位大侠:医学图像处理前景
if(INVALID_SOCKET == s)
{
// Error;
return 1;
}
BOOL bReuse = TRUE;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&bReuse, sizeof(BOOL));
SOCKADDR_IN si;
si.sin_family = AF_INET;
si.sin_port = ntohs(4567+nIndex); // 这里的nIndex为线程的索引号
si.sin_addr.S_un.S_addr = INADDR_ANY;
if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&si, sizeof(si))
{
// Error;
closesocket(s);
return 1;
}
ip_mreq mcase;
mcast.imr_interface.S_un.S_addr = INADDR_ANY;
mcast.imr_multiaddr.S_un.S_addr = inet_addr("234.5.6.7"); // 这里是你的多播地址
setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mcast, sizeof(mcast));
printf("recv data ...\n");
char buf[1024] = {0};
int nAddLen = sizeof(si);
while(TRUE)
{
if(SOCKET_ERROR == recvfrom(s, buf, 1024, 0, (LPSOCKADDR)&si, &nAddrLen))
{
// ERROR;
closesocket(s);
break;
}
else
{
printf("recv data: %s\n", buf);
}
}