社区
网络编程
帖子详情
客户端能否不停的Send,而不Recv?在线等
ezdevelop
2007-11-20 04:47:15
非阻塞SOCKET,超时时间为2秒。
while (true) {
sock->send();
sock->recv(),若超时,则继续循环send->recv...send->recv
}
返回的数据不重要,所以设置recv的超时时间为2秒。
...全文
154
12
打赏
收藏
客户端能否不停的Send,而不Recv?在线等
非阻塞SOCKET,超时时间为2秒。 while (true) { sock->send(); sock->recv(),若超时,则继续循环send->recv...send->recv } 返回的数据不重要,所以设置recv的超时时间为2秒。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jarrylogin
2007-11-20
打赏
举报
回复
干吗这样做呢,你开一个线程定时通过SOCKET发送数据不就可以了吗?,不用管收不收到数据
socrates
2007-11-20
打赏
举报
回复
可以的,支持楼上观点!
lwykj
2007-11-20
打赏
举报
回复
接收 数据 是系统帮你完成的! recv只是你从你的系统缓冲里面把数据取出来!
所以 如果send的数据 跟 recv的数据没关系 那是无所谓的吧!
20YC编程
2007-11-20
打赏
举报
回复
如果不是出于学习SOCKET基本编程目的, 网络编程也许已经没必要这么复杂了; 介绍一个更简单的编写方式;
http://topic.csdn.net/u/20071120/17/1f3f093d-bd6b-4fa7-a7bb-be0744a42767.html
ezdevelop
2007-11-20
打赏
举报
回复
我也想随便接收下,可是必须使recv的超时时间尽量短,就怕因为recv超时,没接收成功,后面的发送会失败
20YC编程
2007-11-20
打赏
举报
回复
如果不是出于学习SOCKET基本编程目的, 网络编程也许已经没必要这么复杂了; 介绍一个更简单的编写方式;
http://topic.csdn.net/u/20071120/17/1f3f093d-bd6b-4fa7-a7bb-be0744a42767.html
tiger波波
2007-11-20
打赏
举报
回复
返回的数据不重要,所以设置recv的超时时间为2秒。
--------------------
不重要的话,随便接受下也无所谓,省得出问题,反正又不作处理,
僵哥
2007-11-20
打赏
举报
回复
个人建议,做有连接通讯就应该做成一个完整的双向回路。是否处理是业务上面的问题。
zhoujianhei
2007-11-20
打赏
举报
回复
那要看你服务器发没发数据了。
僵哥
2007-11-20
打赏
举报
回复
一个是发送超时,另一个则是数据堆积消耗内存,毕竟超时的时间还是相当长的。
ezdevelop
2007-11-20
打赏
举报
回复
服务器端也是非阻塞的,不过客户端不接收的话,会不会导致发送也会失败?
僵哥
2007-11-20
打赏
举报
回复
可或者不可以,这个相关系到服务器的设计,如果你不接收,则可能导致服务器的数据无法发出,如果服务器是设计成阻塞模式的,那么你也无法得到正常的服务。
MyChat可实现聊天室和传小文件.rar
该程序可以成功的实现聊天室聊天——若干人(一个服务器和数个
客户端
)的群聊天, 并可以实现
客户端
对服务器的上传小型文件。界面友好,操作简便。 该程序在上传大文件时,会出现接受方只能接受到一部分文件的问题, 分析原因如下,非阻塞方式在传文件时不能很好的实现发送端和接受端的同步, 即有可能发送端
不停
发送而接受方来不及接受,或接受方
不停
接受可发送方没有发送。 由于非阻塞方式的程序不会一直停留在
send
和
recv
函数上,我们只能通过它们的返回值判断发送和 接受的状态。一般来说,
send
函数返回值为-1时,说明缓存已满,发送方应等待接受方接受,
recv
函数返回值为-1时,说明缓存已空,接受方应等待发送法发送。 这些本应由传输层做好,但我通过调试发送,用MFC搭建的框架在实现非阻塞方式传送文件时, 传输层并没有起到应有的作用,当我将程序调试为,发送端开始发送,而接受端暂不接受时,我发现, 发送方的
send
函数并不由于缓存已满而停止发送,相反,它不顾一切地不断读取文件并发送, 而不管缓存是否将它发送的数据包丢弃,直到读完整个文件。这时,接受方再接受, 就只能收到缓存区大小的数据。
还原
客户端
send
0字节,服务端主动关闭后,
客户端
send
仍然返回0的全过程
还原
客户端
send
0字节,服务端主动关闭后,
客户端
send
仍然返回0的全过程 注:
客户端
和服务端都是非阻塞模式 ### 四次挥手过程图示(
客户端
和服务器都可以主动发出断开连接) 参考: TCP三次握手和四次挥手及wireshark抓取 - elephantcc - 博客园 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S7SD1Hvk-1596600866827)(file:///Users/chen/Library/Application%20Support/
send
和
recv
函数解析(转)
转自:http://blog.csdn.net/gogor/archive/2010/09/20/5896931.aspx 1.
send
函数 int
send
( SOCKET s, const char FAR *buf, int len, int flags ); 不论是
客户端
还是服务器端应用程序都用
send
函数来向TCP连接的另一端发送数据。
客户端
程序一般用se
socket编程
recv
()返回值处理
一般在经典的socket教程中,调用
send
()和
recv
()时都会判断一下返回值,如果返回值是-1(或者SOCKET_ERROR),那么就进行错误处理(一般是打印出错信息,关闭socket,退出)。在我的一个项目中我因为嫌麻烦就想当然没有判断
send
和
recv
的返回值,结果遇到了点小麻烦。简单地说明一下问题:服务器端支持多线程,每个线程用while(1)循环地接收
客户端
的请求并加以
python socket.
recv
() 一直
不停
的返回空字符串原因。
python socket.
recv
() 一直
不停
的返回空字符串原因。 我遇到的是,因为
客户端
异常断开连接,之后服务端就一直接收到空字符串。 这样会无法分辨是
客户端
真的发了一个空串还是怎么样。 下面是复现问题的demo。 先运行server端: # coding=utf-8 import socket if __name__ == '__main__': host = 'localhost' port = 8765 server = socket.socket(sock
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章