UDP通信,服务器for循环发送数据,客户端如何接收数据

carl2021 2010-02-10 05:58:20
UDP通信模式
一台服务器,多个客户端。
服务器只发送数据,客户端只接受数据(服务器只广播)
服务器for循环广播数据。
客户端如何接收数据???
...全文
662 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahniyilin 2010-02-22
  • 打赏
  • 举报
回复
你接收端的代码有问题啊

接收使用for循环进行处理?这样处理有问题的。。。

你使用while循环接收
sams_wang 2010-02-12
  • 打赏
  • 举报
回复
你的客户端接收代码有问题,最好不要用for循环,因为服务器发过来的UDP数据包有可能在发送过程中被拆分为多个数据包、或者在传输过程中包丢失了,采用for循环的话,是很难确定需要循环的次数的,对于UDP通讯客户端程序,最好用while循环不断进行数据的接收,自己在代码中控制什么情况下结束,一个比较好的建议是你的服务器端所有的数据发送完毕之后再发送一个自己定义的结束标志,当客户端接收到该标志的时候就结束while循环,如果怕结束标志在传输的过程中丢掉了而导致客户端没有接收到,可以增加用定时的办法来结束数据的接收了;
网上有很多这种客户端/服务器通讯的代码,多参考参考
carl2021 2010-02-11
  • 打赏
  • 举报
回复
服务端的FOR循环发送,发送的数据为20为一单位的结构体数组。
for (int i=0;i<len;i++)
{
memcpy(p,(char *)&pInfos->CpMis[i],sizeof(pInfos->CpMis[i]));
p += sizeof(pInfos->CpMis[i]);
if ((i+1)%20==0)
{
sendto(s,nSendBuf,1024,0,(sockaddr*)&IP,len_sockaddr);
memset(nSendBuf,'\0',1024);
p=nSendBuf;
}
else if (i+1>len-lmo)
{
memset(nSendBuf,'\0',1024);
p=nSendBuf;
for (i=len-lmo;i<len;i++)
{
memcpy(p,(char *)&pInfos->CpMis[i],sizeof(pInfos->CpMis[i]));
p += sizeof(pInfos->CpMis[i]);
sendto(s,nSendBuf,1024,0,(sockaddr*)&IP,len_sockaddr);
}
}
客户端接收:
int ret = WSAStartup(MAKEWORD(2,0), &wsa);
if ( !ret )
{
s = socket(AF_INET, SOCK_DGRAM, 0);
}

if ( /*s != INVALID_SOCKET*/ !bind(s, (struct sockaddr*)&IP, sizeof(struct sockaddr)) )
{
int len=0;
PCP_INFOS pInfos = (PCP_INFOS)tempbuf;
// recvfrom(s,Tbuf,2,0,(sockaddr*)&IP,&len_sockaddr);
sign=Tbuf[0];
cout=Tbuf[1];
for (int k=0;k<2;k++)
{
len = recvfrom(s,rebuf,1024,0,(sockaddr*)&IP,&len_sockaddr);
// strcat(tempbuf,rebuf);
memset(rebuf,'\0',1024);
}
}
UDX协议 2010-02-11
  • 打赏
  • 举报
回复
应该是你的代码有问题吧。

贴上代码,大家帮你看看。
carl2021 2010-02-11
  • 打赏
  • 举报
回复
for循环里面
recvfrom只收到服务器第一次发来的数据。
服务器后面发来的数据,客户端根本就收不到。
sun007700 2010-02-11
  • 打赏
  • 举报
回复
for循环
recvfrom就可以了
xsc2001 2010-02-11
  • 打赏
  • 举报
回复
客户端也是for循环,在循环里面recvfrom就行了呀。
UDX协议 2010-02-11
  • 打赏
  • 举报
回复
recvfrom,你还想怎么接收?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧