哪个.Net组件应该用于tcp / ip套接字通信?

时间:2009-08-07 23:21:48

标签: c# .net tcp tcplistener

我们需要与另一个希望通过原始tcp / ip套接字通信与我们沟通的系统进行交流。什么是适当的.Net对象(如果有的话)用于此?

如果您知道您认为最好使用的第三方组件,开源组件等,请随时提及。

5 个答案:

答案 0 :(得分:8)

我会使用TcpClient。它位于Socket之上,是Socket的抽象。 TcpClient有GetStream,它返回一个Stream对象。然后,要阅读流,您只需使用流阅读器。

例如:

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;

然后允许(摘录):

取值treamReader.Read(myReadBuffer, 0, myReadBuffer.Length)

答案 1 :(得分:2)

答案 2 :(得分:2)

我们公司使用Dart Socket.net,它基本上将system.net.sockets.socket包装成非常易于使用的方法/组件以及具有自己的功能。我推荐它们用于Windows窗体应用程序。他们有许多示例与他们的演示一起提供,并有一个积极的支持论坛,您可以发布问题并获得支持/建议。

在Dart.com上查看http://www.dart.com/ptsknet.aspx

答案 3 :(得分:1)

TcpClient是最常见的,虽然我更喜欢Socket类。要么工作。

答案 4 :(得分:1)

插座& TCPClient非常易于管理和高效。他们肯定会做你需要的。使用异步模式的原因有多种。

请注意,存在一些线程问题。例如,一些异步方法将在调用线程退出时终止。还有很多非常低效/糟糕的.NET多线程服务器示例,所以要小心。最后要注意的是异常处理。通常你只是得到一个“SocketException”,并且必须检查它以找出真正发生的事情。如果有一些可以独立处理的派生SocketException类,那将会很棒。

但是,不要让我沮丧,一旦你的代码得到实施和工作,它将继续“正常工作”。