C# Socket发送和接收数据问题

baidu_29905333 2015-09-18 10:34:31
假设客户端调用socket.Send发送“123”,然后发送“nmb”。想要的效果是服务器端调用clientSocket.Receive分别接收“123”和“nmb”,可是通过调试发现,服务器端一次性接收“123nmb”。请问怎么实现服务器端分别接收完整的数据?
...全文
251 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nomasp 2015-09-18
  • 打赏
  • 举报
回复
引用 5 楼 bdmh 的回复:
http://blog.csdn.net/bdmh/article/details/25367297 处理一下buffer
看了博客,还没遇到过……
xian_wwq 2015-09-18
  • 打赏
  • 举报
回复
tcp是基于流的,所以在业务层需要进行约定 常规做法1、2楼都提到了 就是自定义包头,包头携带数据长度信息 根据包头来决定后续怎么解析处理
bdmh 2015-09-18
  • 打赏
  • 举报
回复
Forty2 2015-09-18
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
服务端发送前对内容进行处理下,发送byte[]的数组在前几位增加几个byte位,内容为后面应当接收的byte长度,客户端根据这个定义,只接收那么多的长度,后面再接收到的就是下一批的接收内容了
++
引用 3 楼 duanzi_peng 的回复:
比如 每50ms 发送一次数据,客户端就接受一次。这和你的设置有关系。
--
exception92 2015-09-18
  • 打赏
  • 举报
回复
比如 每50ms 发送一次数据,客户端就接受一次。这和你的设置有关系。
  • 打赏
  • 举报
回复
服务端发送前对内容进行处理下,发送byte[]的数组在前几位增加几个byte位,内容为后面应当接收的byte长度,客户端根据这个定义,只接收那么多的长度,后面再接收到的就是下一批的接收内容了
_lee_chong 2015-09-18
  • 打赏
  • 举报
回复
消息定下协议;这样就不怕了; 比如这样规定 type 消息类型,0:调用某函数,1:显示某信息 message 消息内容 然后服务器分别发送 {"type":1,"message":"123"} {“type”:1,"message":"nmb"} 客户端就算一次性全接受了,也能区别对待
江南小鱼 2015-09-18
  • 打赏
  • 举报
回复
1、发送“123”后,断开连接;继续第二次发送“nmb” 2、定义一个协议,接收端按协议分割读取123和nmb

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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