请帮我用udp向多个客户端发送消息 [英] Please help me send message to multiple client using udp

查看:640
本文介绍了请帮我用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆