客户端在登陆成功后,开始向服务器发送数据,里面有这么两次发送。是连续的。但是经常丢失,第二次发送服务器收都收不到。sleep一下后会好很一点。但是偶尔还是会丢。怎么解决各位帮帮。此贴问题一样。帮助解决200分相送。
http://topic.csdn.net/u/20090304/09/95cdc6af-a70e-43bd-97c7-b9a6974354ee.html如果需要发送全部原码。留下EMAIL。连续发送数据的代码 //准备数据
//登陆成功消息
Data msgToSend = new Data();
msgToSend.cmdCommand = Command.Login;
msgToSend.strName = clsglo.strname;
msgToSend.strId = clsglo.strID;
msgToSend.strPSW = clsglo.strPws;
msgToSend.strMessage = null;
byte[] b = msgToSend.ToByte();
SendText(b);
//请求更新在线用户列表
msgToSend.cmdCommand = Command.List;
msgToSend.strName = clsglo.strname;
msgToSend.strId = clsglo.strID;
msgToSend.strPSW = clsglo.strPws;
msgToSend.strMessage = null;
b = msgToSend.ToByte();
SendText(b);
//发送数据的代码
private void SendText(byte[] byteMessage)
{
lock (clsglo.tcpcl.Client)
{
clsglo.tcpcl.Client.BeginSend(byteMessage, 0, byteMessage.Length, SocketFlags.None, new AsyncCallback(OnSend), clsglo.tcpcl.Client);
Thread.Sleep(500);
}
用下面三行的代码丢失更多
//BinaryWriter writer = new BinaryWriter(clsglo.tcpcl.GetStream()); ;
//writer.Write(byteMessage);
//writer.Flush();
}
//关闭
public void OnSend(IAsyncResult ar)
{
//allDone.Reset();//让那些等待这个事件的线程阻塞。
lock (clsglo.tcpcl.Client)
{
clsglo.clientSocket.EndSend(ar);
}
}
http://topic.csdn.net/u/20090304/09/95cdc6af-a70e-43bd-97c7-b9a6974354ee.html如果需要发送全部原码。留下EMAIL。连续发送数据的代码 //准备数据
//登陆成功消息
Data msgToSend = new Data();
msgToSend.cmdCommand = Command.Login;
msgToSend.strName = clsglo.strname;
msgToSend.strId = clsglo.strID;
msgToSend.strPSW = clsglo.strPws;
msgToSend.strMessage = null;
byte[] b = msgToSend.ToByte();
SendText(b);
//请求更新在线用户列表
msgToSend.cmdCommand = Command.List;
msgToSend.strName = clsglo.strname;
msgToSend.strId = clsglo.strID;
msgToSend.strPSW = clsglo.strPws;
msgToSend.strMessage = null;
b = msgToSend.ToByte();
SendText(b);
//发送数据的代码
private void SendText(byte[] byteMessage)
{
lock (clsglo.tcpcl.Client)
{
clsglo.tcpcl.Client.BeginSend(byteMessage, 0, byteMessage.Length, SocketFlags.None, new AsyncCallback(OnSend), clsglo.tcpcl.Client);
Thread.Sleep(500);
}
用下面三行的代码丢失更多
//BinaryWriter writer = new BinaryWriter(clsglo.tcpcl.GetStream()); ;
//writer.Write(byteMessage);
//writer.Flush();
}
//关闭
public void OnSend(IAsyncResult ar)
{
//allDone.Reset();//让那些等待这个事件的线程阻塞。
lock (clsglo.tcpcl.Client)
{
clsglo.clientSocket.EndSend(ar);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货