首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

UDP Socket 关闭操作请问

2013-04-21 
UDP Socket 关闭操作请教Hi:all:请教一个问题,请指教:创建一个Udp Socket(例如为gSocket),完成了一次发包

UDP Socket 关闭操作请教
Hi:all:
  请教一个问题,请指教:
  创建一个Udp Socket(例如为gSocket),完成了一次发包以及相应的收包,然后就关闭了套接字(close(gSocket))。
  后续,在这个gSocket上依然可以发包成功(sendto),但是却无法收包(recvfrom)。所以请教一下,对于Udp类型的socket的close操作实现了什么效果:为什么关闭后,可以依旧在这个socket上发包成功,但是收包却失败呢,请高手指教。

  编程环境为(linux suse) & g++
[解决办法]
Linux下面的不知道
WIndows下面closesocket(gSocket)之后还有两个操作:
1. closehandle(handle) // 关闭句柄
2. WSACleanup() // 把DLL清出去
[解决办法]
我是这样理解的,发出去只是从本地发出去成功了,并不表示到达目的的,且对方接收成功。

就好像我本来是要去汽车南站的,我从家里出去了,但是并不表示我一定能到达南站呀,假如迷路或....。

所以发送成功与接收成功完全是两个相互独立的事件,并没有任何必然联系。
[解决办法]

引用:
引用:我是这样理解的,发出去只是从本地发出去成功了,并不表示到达目的的,且对方接收成功。

就好像我本来是要去汽车南站的,我从家里出去了,但是并不表示我一定能到达南站呀,假如迷路或....。

所以发送成功与接收成功完全是两个相互独立的事件,并没有任何必然联系。

多谢回复,现在测试的结果是:
包成功发出去了,对方也成……



具体实现了什么,我也没有研究过。你只要保证程序的逻辑是正确的就好了,太细的不需要研究。
按正常操作步骤来就好了。
[解决办法]
你确定close socketfd 后在发送数据服务器端还能接受到数据?你在close后面加个延时函数试试,然后在发送数据,看看服务器端还能接受到数据么? 我测试着这包数据没有到达服务器端.

热点排行