社区
C#
帖子详情
Socket问题,发送端如何知道接收端已经接收完毕
Kation
2012-10-15 05:08:38
如题
我现在用BeginSend与BeginReceive
但是在SendCallBack的时候
服务器并不一定触发ReceiveCallBack
发送端for循环1000个32字节
SendCallBack后才发送下一个
但是
接收端只接收得500个不到
...全文
523
15
打赏
收藏
Socket问题,发送端如何知道接收端已经接收完毕
如题 我现在用BeginSend与BeginReceive 但是在SendCallBack的时候 服务器并不一定触发ReceiveCallBack 发送端for循环1000个32字节 SendCallBack后才发送下一个 但是 接收端只接收得500个不到
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kation
2012-10-15
打赏
举报
回复
搞清楚了。。。
原来是粘包的问题。。。
Kation
2012-10-15
打赏
举报
回复
[Quote=引用 13 楼 的回复:]
按我的吧!肯定行,如:
【一个包长度】【总包数】【第几包】【值】【检验】
将总包数给ProgressBar.maxValue=【总包数】
第一次读:
【一个包长度】
将总包数给ProgressBar.CurrentValue=【第几包】
[/Quote]
我现在连续发送1000个数据
只有500个不到能接收
这个和数据包的内容没有关系!
KJ_Wang
2012-10-15
打赏
举报
回复
按我的吧!肯定行,如:
【一个包长度】【总包数】【第几包】【值】【检验】
将总包数给ProgressBar.maxValue=【总包数】
第一次读:
【一个包长度】
将总包数给ProgressBar.CurrentValue=【第几包】
Kation
2012-10-15
打赏
举报
回复
这样说吧
我有一个发送队列
只要里面有数据
就时时刻刻的往外发送数据,发送完毕一条,发送下一条
要做到无间隔发送
但是,发送的量越多,数据越小
那么服务器接收成功的数据也越少
无间隔发送应该能做到的吧?
不然那些服务器程序怎么支撑大量数据交换?
Kation
2012-10-15
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
你是要效率不要准确率啊,一般发送后都会等待对方返回应答包,才知道对方接受成功了吧,要不然对方没有接受到or接受错误,那不是白发了。。
[/Quote]
底层先解决效率
准确率什么的其它地方弄
Kation
2012-10-15
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
指定协议,尾部信息加上校验
[/Quote]
怎么个弄法?
我需要的是Socket类上的解决方法
你说的尾部信息加上校验什么的都不行
另外说一个情况,每次发送完毕sleep(10)就能几乎1000条全部接收完毕。
但是我想要连续发送,而不是有间隔
有间隔效率下降很多
KJ_Wang
2012-10-15
打赏
举报
回复
楼上说的是一种方法,其实最好的方法是先定好协议,计算一个包
用两条语句:
第一条读长度
socket.receive(buffers)//长度
算出长度
socket.receive(buffers)//值(包含校验)
保证不会出错!
KJ_Wang
2012-10-15
打赏
举报
回复
楼上说的是一种方法,其实最好的方法是先定好协议,计算一个包
用两条语句:
第一条读长度
socket.receive(buffers)//长度
算出长度
socket.receive(buffers)//值(包含校验)
保证不会出错!
Kation
2012-10-15
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
指定协议,尾部信息加上校验
[/Quote]
怎么个弄法?
我需要的是Socket类上的解决方法
你说的尾部信息加上校验什么的都不行
另外说一个情况,每次发送完毕sleep(10)就能几乎1000条全部接收完毕。
但是我想要连续发送,而不是有间隔
有间隔效率下降很多
pig357
2012-10-15
打赏
举报
回复
你是要效率不要准确率啊,一般发送后都会等待对方返回应答包,才知道对方接受成功了吧,要不然对方没有接受到or接受错误,那不是白发了。。
bdmh
2012-10-15
打赏
举报
回复
指定协议,尾部信息加上校验
SocketUpEx
2012-10-15
打赏
举报
回复
[Quote=引用楼主 的回复:]
发送端如何知道接收端已经接收完毕
[/Quote]
接收端接收完成发个消息给发送端
Kation
2012-10-15
打赏
举报
回复
楼上2个说的方法是可以,但是会影响效率啊
足球中国
2012-10-15
打赏
举报
回复
接收完毕发送个包给服务器。
当然服务器端与客户端都要有个超时设置。
jiafeimao86
2012-10-15
打赏
举报
回复
首先你定义数据的长度,校验等信息,然后在接收端接收的时候根据接收的数据长度和校验是否正确,如果正确接收端在发送数据到服务端告诉服务端数据接收完毕,继续发送下一条数据,这样就不会丢失了。。。
如果校验数据错误,可可以通知服务端重新发送。 在线程类里面有一个线程通间的通信类的。
java实现UDP的
发送
端
和
接收
端
UDP协议是一种不可靠的网络协议,它在通信的两
端
各建立一个
Socket
对象,但是这两个
Socket
只是
发送
,
接收
数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户
端
和服务器的概念 Java提供了Datagram
Socket
...
java网络编程基础,
Socket
的
发送
与
接收
,javaTCP,UDP协议的实现。
Socket
(套接字)
java网络编程基础,
Socket
的
发送
与
接收
,javaTCP,UDP协议的实现。
Socket
(套接字)
使用
Socket
发送
接收
HTTP请求(JAVA)
最近本人毕业设计涉及到C51单片机
发送
HTTP给服务器,因此学习了HTTP协议的
发送
和
接收
。这里不是使用Http client之类封装好的操作,而是手动模拟。 HTTP协议位于应用层运行在TCP/IP之上,所以可以使用
Socket
建立TCP/...
Java基础-网络编程-UDP协议-
发送
和
接收
数据步骤
简单来说,当一台计算机向另外一台计算机
发送
数据时,
发送
端
不会确认
接收
端
是否存在,就会发出数据,同样
接收
端
在收到数据时,也不会向
发送
端
反馈是否收到数据。 由于使用UDP协议消耗资源小,通信效率高,所以通常...
socket
的
发送
与
接收
缓冲区
sendmsg等)利用tcp
socket
向网络
发送
应用数据,而tcp/ip协议栈再通过网络设备接口把
已经
组织成struct sk_buff的应用数据(tcp数据报)真正
发送
到网络上,由于应用程序调用send的速度跟网络介质
发送
数据的速度存在差异...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章