//发送用户输入的数据到多播组 sendto(server, sendline, strlen(sendline), 0, (sockaddr*)(&remote), sizeof(remote)); } cout<<"do_send end..."<} void do_read(void* arg) { SOCKET server = (SOCKET)arg; char buf[BUFFER_SIZE+1]; int ret; sockaddr_in client; int clientLen; for(;;) //一直读取知道主线程终止 { clientLen = sizeof(client); memset(&client, 0, clientLen); ret = recvfrom(server, buf, BUFFER_SIZE, 0, (sockaddr*)(&clientLen), &clientLen); if ( ret == 0) //do_read在用户直接回车发送了一个空字符串 { continue; } else if( ret == SOCKET_ERROR ) { if( WSAGetLastError() == WSAEINTR ) //主线程终止recvfrom返回的错 break; cout<<"Error in recvfrom: "< break ; } buf[ret] = '\0'; cout<<"received: "< } cout<<"do_read end..."<} 当然上面的代码如果应用到实际的程序中还需要作更多的工作,不过实现多播功能真的很简单,不是吗 :-) 我只是刚刚才开始学习网络编程方面的东东,上面的代码如果你认为有什么问题,请直接发email给我。 参考资料: 《Unix网络编程(第一卷) 套接口API和X/Open传输接口API》[美] W.Richard Stevens 著 |
正在阅读:读书笔记:在局域网中实现多播功能读书笔记:在局域网中实现多播功能
2004-03-16 15:14
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键