高分求大神,stocket 接收的时候出现接受到上条记录

Teln_小凯 2013-09-22 04:28:29
问题
如果一直在客户端/服务端发送消息,接收无问题
比如 一直在客户端发送1,2,3 服务器接受1,2,3

如果客户端发一次,服务器发一次,客户端发一次,服务器发一次 这样的话会出现,发送2次才能成功
第一次接收的是上一次的记录

比如服务器发送1,客户端接收1,
客户端发送2,服务器接收1,--交换的第一次是上次记录
客户端发送3,服务器接收3---从这里开始正常
客户端发送4,服务器接收4

然后
服务器发送5,客户端接收4,--交换的第一次是上次记录
服务器发送6,客户端接收6---从这里开始正常

下面就是发送和接收的代码

服务端接收代码

while (true)
{
data = new byte[1024];
int length = client.Receive(data);//接收的数据长度
if (length > 0)
{
this.Invoke(new Action(() => this.txtShow.Text += System.Environment.NewLine + "客户IP:" + clientip.Address + "\t" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
this.Invoke(new Action(() => this.txtShow.Text += System.Environment.NewLine + Encoding.UTF8.GetString(data, 0, data.Length-1)));
}
}

客户端接收

while (true)
{
data = new byte[1024];
length = newclient.Receive(data);//接收的数据长度
if (length > 0)
{
this.Invoke(new Action(() => this.txtShow.Text += System.Environment.NewLine + "服务器IP:" + clientip.Address + "\t" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
this.Invoke(new Action(() => this.txtShow.Text += System.Environment.NewLine + Encoding.UTF8.GetString(data, 0, data.Length - 1)));
}
}



服务端发送

data = Encoding.UTF8.GetBytes(this.txtMsg.Text.Trim());
client.Send(data, data.Length, SocketFlags.None);//发送信息


客户端发送

data = Encoding.UTF8.GetBytes(this.txtMsg.Text.Trim());
newclient.Send(data, data.Length, SocketFlags.None);//发送信息
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Teln_小凯 2013-09-23
  • 打赏
  • 举报
回复
引用 1 楼 ycg_893 的回复:
搜索TCP的粘包
谢谢
ycg_893 2013-09-22
  • 打赏
  • 举报
回复
搜索TCP的粘包

110,538

社区成员

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

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

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