请帮我用udp向多个客户端发送消息 [英] Please help me send message to multiple client using udp
本文介绍了请帮我用udp向多个客户端发送消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Hello guys
我想从服务器向许多客户端发送一些短信。客户端只在消息框上显示它们。因为有很多客户端,我得到一个udp套接字,向它发送数据,然后关闭。我的问题是:在将数据写入套接字后,如果我立即关闭套接字,则消息将丢失。我应该在哪里关闭插座?
提前谢谢
mr.abzadeh
编辑:原来的问题不清楚,所以我编辑了它
编辑:我的代码在这里添加(简化)
SOCKET socket1 = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
ADDRINFOW * pAddr;
ADDRINFOW提示;
memset(& hints,0,sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_protocol = IPPROTO_UDP;
hints.ai_socktype = SOCK_DGRAM;
GetAddrInfoW(wszHostName,lpPortName,& hints,& pAddr);
sendto(socket1,(const char *)pBuf,uSendLen,0,pAddr-> ai_addr,Addr-> ai_addrlen);
closesocket(socket1); //这会杀死套接字并阻止消息传递
解决方案
为什么不按照文档建议的方式来做呢?考虑sendto()返回值的原因可能很有用。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms740148(v=vs.85).aspx [ ^ ]
这也可以帮到你:
http://gafferongames.com/networking-for-game-programmers/virtual-connection-over-udp/ [ ^ ]
这里的例子很好:
http://computing.unn.ac.uk/staff/cgmb3/teaching/sockets/D onahooWinAdaptsListings.pdf [ ^ ]
Hello guys
I want to send some text messages from server to many clients. client only show them on a messagebox. since there are many client, I get a udp socket, send data to it, and then closesocket. my problem is: after writing data to socket, If I immediately close the socket, message will be lost. where I should close the socket?
thanks in advance
mr.abzadeh
Edit: the original question was not clear, so I edited it
Edit: my code is added here(simplified)
SOCKET socket1 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); ADDRINFOW * pAddr; ADDRINFOW hints; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_protocol = IPPROTO_UDP; hints.ai_socktype = SOCK_DGRAM; GetAddrInfoW( wszHostName, lpPortName, &hints, &pAddr); sendto( socket1, (const char *)pBuf, uSendLen, 0, pAddr->ai_addr, Addr->ai_addrlen); closesocket(socket1);//This kills socket and prevents message delivery
解决方案
Why not just do it the way the documentation suggests? It may be productive to contemplate why sendto() returns a value.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms740148(v=vs.85).aspx[^]
This may help you also:
http://gafferongames.com/networking-for-game-programmers/virtual-connection-over-udp/[^]
The examples here are good:
http://computing.unn.ac.uk/staff/cgmb3/teaching/sockets/DonahooWinAdaptsListings.pdf[^]
这篇关于请帮我用udp向多个客户端发送消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文