1

我正忙着用 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 天时间寻找解决方案 :-)

4

0 回答 0