【发布时间】:2011-09-29 13:48:44
【问题描述】:
可能只看这个视频:http://screencast.com/t/OWE1OWVkO 如您所见,启动连接(通过 telnet 或 firefox)与我的程序第一次得到消息之间的延迟。
这是等待连接的代码
public IDLServer(System.Net.IPAddress addr,int port)
{
Listener = new TcpListener(addr, port);
Listener.Server.NoDelay = true;//I added this just for testing, it has no impact
Listener.Start();
ConnectionThread = new Thread(ConnectionListener);
ConnectionThread.Start();
}
private void ConnectionListener()
{
while (Running)
{
while (Listener.Pending() == false) { System.Threading.Thread.Sleep(1); }//this is the part with the lag
Console.WriteLine("Client available");//from this point on everything runs perfectly fast
TcpClient cl = Listener.AcceptTcpClient();
Thread proct = new Thread(new ParameterizedThreadStart(InstanceHandler));
proct.Start(cl);
}
}
(我在将代码放入代码块时遇到了一些麻烦)
我尝试了几种不同的方法,难道我使用的是 TcpClient/Listener 而不是原始的 Socket 对象吗?我知道这不是强制性的 TCP 开销,我已经尝试在同一个线程中运行所有内容,等等。
【问题讨论】:
-
你终于找到问题了吗?
-
好奇你是怎么解决这个问题的,遇到同样的问题
标签: c# performance c#-3.0 sockets tcplistener