各位网络编程高手,本人在设计通讯程序时,碰到麻烦(UDP通讯的问题),请多多指教!

huanghai 2001-08-02 09:11:42
我是单机调试的,此段程序初始如下:
WSAStartup(0x0202, &wsaData);

RecvSend= socket(AF_INET, SOCK_DGRAM, 0);
hwnd=this->m_hWnd;
int iPort=5150;
char szRecipient[20]="127.0.0.1";
InternetAddr.sin_family = AF_INET;
InternetAddr.sin_port = htons((short)iPort);
InternetAddr.sin_addr.s_addr = inet_addr(szRecipient);
int j=bind(RecvSend,(PSOCKADDR)&InternetAddr,sizeof(InternetAddr));
int i=WSAAsyncSelect(RecvSend,hwnd,WM_SOCKET,FD_READ);

我的另一个程序向此程序SENDTO时,此程序收不到WM_SOCKET消息,请教怎么回事??




...全文
146 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Julienjut 2001-09-03
  • 打赏
  • 举报
回复
是因为 WSAAsyncSelect() 函数设置的消息是系统默认的几个消息中的一个,你定义的消息当然不好使了。
INDSP 2001-08-04
  • 打赏
  • 举报
回复
我也碰到了类似的问题,我的程序可以RUN,但是另一端收不到消息,我已经把FIREWALL关闭了的,我是在Application->onMessage里拦截并处理WINSOCK消息的,此机制工作正常,我想是
网络设置的问题拉,我是学校局域网里实验的,如我的IP是10.10.40.23,默认的网关是10.10.40.254,我们的节点是可以广播的,可为什么我的程序不能广播呢呢??网络还需要怎么设置吗?希望知道的可以讲下,谢了。

shy007 2001-08-04
  • 打赏
  • 举报
回复
gz
Goober 2001-08-03
  • 打赏
  • 举报
回复
好象是你的WSAAsyncSelect(RecvSend,hwnd,WM_SOCKET,FD_READ);
函数的最后一个参数中要添加FD_RECEIVE,
zb_china 2001-08-03
  • 打赏
  • 举报
回复
另一程序的地址也必须是127.0.0.1
先直接使用recv接收,看收得到不。
huanghai 2001-08-03
  • 打赏
  • 举报
回复
感谢各位发言,我先用RECV直接收结果收到了。
但是我已经做了
#define WM_SOCKET (WM_USER+10)
还有
ON_MESSAGE(WM_SOCKET,Read)
但是Read()函数却没有执行!

kkk16 2001-08-03
  • 打赏
  • 举报
回复
表面看好象没什么问题,不过我提醒你注意一下WM_SOCKET消息的定义和它的处理。
我估计很大的问题可能出在这个消息你没有定义、处理好。
huanghai 2001-08-02
  • 打赏
  • 举报
回复
我也是一方先BIND,再设置异步消息机制,然后另一方面发SENDTO,
但是前一方收不到消息。
tinydust 2001-08-02
  • 打赏
  • 举报
回复
我是用vb的所以看不懂你的代碼,但是我們可以就udp的機制聊聊!
udp的一端要綁定bind(和tcp不同,tcp是堅聼)。然後另一端連接,發信息,斷開(這是一開始的那一端就應該能收到信息了)!
看不懂你的代碼,所以不知道你是不是這麽做的!
huanghai 2001-08-02
  • 打赏
  • 举报
回复
各位网络编程高手,这个问题对你们来说可能算太小了,
不过你的回答对我来说很重要。我的问题主要是以数据报
通讯时,一方以信息,另一方却收不到信息(基于消息机制)。
huanghai 2001-08-02
  • 打赏
  • 举报
回复
麻烦各位抽点时间读一读吧!
真急。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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