SendTo(str,str.GetLeng" />
您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 一个UDP奇怪的问题,高手来答

一个UDP奇怪的问题,高手来答

来源:网络整理     时间:2016/8/5 6:09:51     关键词:

关于网友提出的“ 一个UDP奇怪的问题,高手来答”问题疑问,本网通过在网上对“ 一个UDP奇怪的问题,高手来答”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 一个UDP奇怪的问题,高手来答
描述:

MFC 继承一个CSocket 类的 CMySocket 
客户端:
 创建一个无端口要求的套接字 IP:127.0.0.1
           mySocket = new CMySocket;
mySocket->Create(0,SOCK_DGRAM);
CString str="hello";
mySocket->SendTo(str,str.GetLength(),8888,"127.0.0.1",0);
服务器:
 端口:8888 IP:127.0.0.1
重载 OnReceive()
{
           char buff[10];
memset(buff, 0, sizeof(buff));
sockaddr_in client;
int nlen = sizeof(SOCKADDR);
ReceiveFrom(buff,sizeof(buff),(LPSOCKADDR)&client,&nlen,0);
CString str_IP =inet_ntoa(client.sin_addr);
int port=client.sin_port;
CString str_Port;
str_Port.Format("%d",port);
AfxMessageBox(str_Port);
UINT Port = client.sin_port ;
SendTo(buff,sizeof(buff),Port,str_IP,0);     // 
}
问题来了:
在OnReceive 中直接使用接收到的 UDP 信息 client 发送一个回递信息给 UDP(刚接收的),客户端接收不到信息,且服务器又进行一次OnReceive 调用,再用此时接收到的client 发送一个信息,客户端可以接收到信息。
经过上述论述,你可能学得是第二次信息才接收到客户端的 数据,问题 在于:真正接收到的数据,在本问题中即:str="hello",是在第一次接收中得到的,而用第二次得到的client 信息才能发送回递信息,即对应的 IP信息是在第二次接收数据中得到的
我很困惑 ,高手来帮我解答一下。 


以上介绍了“ 一个UDP奇怪的问题,高手来答”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3118688.html

相关图片

相关文章