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