本帖最后由 Taoyi 于 2019-11-19 16:56 编辑
公司一个项目中,跟第三方系统对接需要用到socket来发送和接收报文。
由于之前没用过这种方式,百度了跟着写了一个demo,但是,会返回 “远程主机强迫关闭了一个现有的连接” 这样的一个错误。
catch到SocketException中 ErrorCode=10054,SocketErrorCode=ConnectionReset。
跟踪发现连接上IP后,又自动断开了,导致发送与接收都没有用。目前不知道要如何解决这个问题,有大神帮忙给个思路不
附上代码,其中xml为需要传递过去的报文。
[C#] 纯文本查看 复制代码 private void Test()
{
var xml = CreateXml();
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
var endPoint = new IPEndPoint(IPAddress.Parse("36.0.12.112"), 9052);
socket.Connect(endPoint);
socket.Send(Encoding.UTF8.GetBytes(xml));
var response = string.Empty;
var resBytes = new byte[1024];
var bytes = socket.Receive(resBytes, resBytes.Length, 0);
response += Encoding.UTF8.GetString(resBytes, 0, bytes);
txb1.Text = response;
}
catch(SocketException ex)
{
txb1.Text = ex.Message;
}
finally
{
socket.Close();
}
} |