是否一定需要绑定?

xxjoyjn 2009-01-09 12:22:02
我在用UDP编写聊天程序时遇到了一个奇怪的问题:
服务器端没有问题,问题出现在客户端:

服务器端IP和端口都是固定的,在这个端口使用一个线程来接受数据,当然使用了绑定。在服务器端发送数据到服务器端没有问题,服务器端完全可以接受到数据。
但是,客户端除了发送数据外也需要接受数据,因为客户端需要回复。那么我在客服端也使用了一个线程来接受数据,程序已启动就启动这个线程来接受数据,这里没有
使用绑定,应该说接受线程启动后运行到recvfrom这个函数时就会挂起,但结果不是这样,每当客户端程序已启动,这个时候服务器当然没有数据过来,然而线程在
recvfrom函数并没有挂起,而是不断地收到无数的数据,数据来源的IP全部是:T:204.204.204.204,每次启动客户端时,这个IP不一样了。到底是怎么回事?是不是在客户端也非得要绑定SOCKET?
谢谢。
...全文
160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lianghaijin 2009-01-12
  • 打赏
  • 举报
回复
客户端也需要绑定。UDP跟TCP不一样。
yekoufeng 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 keven1868 的回复:]
之所以recvfrom返回后sockaddr_in中的ip地址是204.204.204.204,是因为你没有对定义的sockaddr_in变量进行初始化,里面的ip值被默认初始化为0xcccccccc,而十六进制cc转换为十进制就是204,recvfrom返回-1就失败后,sockaddr_in变量是不会被修改的
[/Quote]

楼主是这个原因吗?
qsc_bmn 2009-01-12
  • 打赏
  • 举报
回复
应该是keven1868所说的原因
roadblossom 2009-01-10
  • 打赏
  • 举报
回复
up
lhsxsh 2009-01-10
  • 打赏
  • 举报
回复
还没遇到这样的问题,帮UP
xxjoyjn 2009-01-09
  • 打赏
  • 举报
回复
更正:“在服务器端发送数据到服务器端没有问题”应该是“在客户端发送数据到服务器端没有问题”
keven1868 2009-01-09
  • 打赏
  • 举报
回复
之所以recvfrom返回后sockaddr_in中的ip地址是204.204.204.204,是因为你没有对定义的sockaddr_in变量进行初始化,里面的ip值被默认初始化为0xcccccccc,而十六进制cc转换为十进制就是204,recvfrom返回-1就失败后,sockaddr_in变量是不会被修改的
keven1868 2009-01-09
  • 打赏
  • 举报
回复
是因为出错了,recvfrom的返回值应该是-1,你在recvfrom之后调用一下WSAGetLastError,返回的错误值应该是10022
xxjoyjn 2009-01-09
  • 打赏
  • 举报
回复
我的问题是:为什么在客户端,recvfrom根本不堵塞,即使没有服务器端发送数据过来也不堵塞,直接就执行还回了,,接受的数据都是些乱码
keven1868 2009-01-09
  • 打赏
  • 举报
回复
The recvfrom function reads incoming data on both connected and unconnected sockets and captures the address from which the data was sent. This function is typically used with connectionless sockets. The local address of the socket must be known. For server applications, this is usually done explicitly through bind. Explicit binding is discouraged for client applications. For client applications using this function, the socket can become bound implicitly to a local address through sendto, WSASendTo, or WSAJoinLeaf.

-- MSDN.

18,356

社区成员

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

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