我们需要与另一个系统进行原始的tcp/ip套接字通信。如果有合适的.NET对象,您可以使用它来实现吗?
如果您知道更好的第三方组件、开源组件等,也请随时提出建议。
如果您知道更好的第三方组件、开源组件等,也请随时提出建议。
tcpClient = new TcpClient(host, port)
{
ReceiveTimeout = readTimeout
};
stream = tcpClient.GetStream();
streamReader = new StreamReader(stream, Encoding.ASCII);
streamWriter = new StreamWriter(stream, Encoding.ASCII)
{
AutoFlush = true
};
return this;
这会使得(代码片段)可以执行:
streamReader.Read(myReadBuffer, 0, myReadBuffer.Length)
System.Net.Sockets.Socket
http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
Socket和TCPClient都很容易管理和高效。它们肯定能够满足您的需求。使用任何一种异步模式都有很多好处。
请注意,存在一些线程问题。例如,某些异步方法将在调用线程退出时终止。还有很多非常低效/糟糕的.NET多线程服务器示例,因此请小心。最后要注意的是异常处理。通常只会返回一个“SocketException”,您需要检查它以了解实际发生了什么。如果有更多派生的SocketException类可以独立处理,那就太好了。
但不要让我打击你的积极性,一旦您实现并使代码正常工作,它将继续“正常工作”。
TcpClient
而非Socket
,因为它封装了与 TCP 通信相关的大部分功能,自己重新实现没有必要。 - Noldorin