错误:已建立的连接已被主机中的软件中止

时间:2012-06-08 09:06:47

标签: c# .net sockets

我正忙于用C#编写.NET数据提供程序作为Java JDBC驱动程序的.NET对应程序。此驱动程序必须使用XDR(旧编组协议)通过TCP / IP连接到我们的RulesService。 JDBC驱动程序工作正常,但C#的第一个原型给了我错误“已建立的连接被主机中的软件中止”。

我花了2天的时间才找到解决方案:使用System.IO.BufferedStream

例如:

socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

socket.SendTimeout = timeout;
socket.ReceiveTimeout = timeout;

socket.SendBufferSize = 1048510;
socket.ReceiveBufferSize = 1048510;

socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
socket.NoDelay = true;

socket.Connect(host, port);

this.datastream = new **BufferedStream**((Stream)new NetworkStream(socket), 1048510);

希望这篇文章能帮助别人花2天时间寻找解决方案: - )

0 个答案:

没有答案