【发布时间】:2011-06-18 22:40:41
【问题描述】:
我有一个程序,客户端通过 TCP-IP 相互通信。当一个客户做某事时,他会一一通知其他客户这件事发生了。这是我用来发送数据的代码:
public static string SendDirect(string data, string hostName, int portNumber)
{
string responseData;
try
{
var client = new TcpClient(hostName, portNumber);
Stream s = client.GetStream();
var sw = new StreamWriter(s) { AutoFlush = true };
sw.WriteLine(data);
s.Close();
client.Close();
s.Dispose();
sw.Dispose();
responseData = "OK";
}
catch (SocketException ex)
{
responseData = ex.Message;
}
return responseData;
}
线
var client = new TcpClient(hostName, 端口号);
对于某些机器来说有时会很慢。例如,在我的家庭网络中,大约需要 2 或 3 秒。你能看出 15 个客户有多糟糕吗?
我想知道不每次都关闭客户端并始终保持其中 30-40 个打开的成本是多少,或者是否可能?我假设需要对一些机制进行检查以确保它们还活着并确保它们都正确关闭,但我想知道这个想法本身是否正确..
谢谢!
【问题讨论】: