我在Android上创建一个应用程序,当用户在Android键盘上输入时,可以将字符代码发送到服务器C#。
这是android方面的send方法:
public Boolean writeMessage(String message) {
try {
printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println(message);
return true;
} catch (Exception ex) {
Log.e(TAG,"write error: " +ex.getMessage());
return false;
}
}
服务器监听消息(C#):
Thread myThread = new Thread(new ThreadStart(ServeClient));
myThread.Start();
void ServeClient(){
StreamReader reader = new StreamReader(tcpClient.GetStream());
while (true)
{
try
{
String message = reader.ReadLine();
if (message != null)
{
Console.WriteLine(message);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
我的代码有效,但是当用户输入更快时,服务器延迟在1,2或3秒内读取消息(我已经测试了用户输入时获取字符的方法,它工作正常,而不是延迟)。
我的问题在哪里?提前致谢!
答案 0 :(得分:0)
您的问题可能是由Nagle's algorithm减少TCP流量引起的。考虑在您的客户端设置TCP_NODELAY
(和服务器 - TcpClient.Client.NoDelay
- 如果通信是双向的)。
编辑:对于java,它是Socket.setTcpNoDelay
方法。