好的,所以这是我的问题...基本上我做了一个代码,我在其中实现了一个计时器..如果我运行"客户端"将数据发送到服务器并且计时器处于活动状态时,如果我想要非常快速地发送它们,则消息堆栈。
示例:而不是:
"Hello"
我明白了:
如果我想非常快地发送它们,那么 "HelloHelloHelloHelloHelloHelloHelloHelloHello"
就会堆积起来... 1毫秒可以说。
当服务器获取信息时,有没有办法解决它而不是将它们分开?我不会给出接收的代码,因为它有效..这是问题所在:
private void sends()
{
if (serverSocket.Connected)
{
send = textBox2.Text;
byte[] buffer = Encoding.ASCII.GetBytes(send);
serverSocket.Send(buffer);
}
}
private int s = 0;
private string send = string.Empty;
void Sendata(Socket socket, string stf)
{
byte[] data = Encoding.ASCII.GetBytes(stf);
socket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallback), socket);
}
private void SendCallback(IAsyncResult AR)
{
Socket socket = (Socket)AR.AsyncState;
socket.EndSend(AR);
}
private void button3_Click(object sender, EventArgs e)
{
// timer1.Start();
//Thread send = new Thread(new ThreadStart(sends));
// send.Start();
for (int i = 0; i < 50000; i++)
{
if (serverSocket.Connected)
{
send = textBox2.Text;
Sendata(serverSocket, send);
}
}
}
答案 0 :(得分:0)
您需要一种方式来描绘消息。也许在每条消息之后发送换行符,除非您需要能够在消息中发送换行符。如果是这种情况,您可以为每条消息添加长度前缀。然后接收端将首先解析长度,然后在考虑消息完成之前等待那么多字节。这样,可以在一次大推送中发送多条消息,接收端只需按长度解析它们。