gpt4 book ai didi

c# - Linux 服务器套接字到 Windows 客户端套接字

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:43 25 4
gpt4 key购买 nike

您好,我正在编写一段代码,将 Windows 客户端连接到 Linux 服务器套接字。我已经可以建立连接,但似乎 Linux 服务器总是在几秒钟后切断我的连接,而不向我发送回我需要的响应。另外,我已经尝试过使用 telnet,但几秒钟后,Linux 服务器再次切断了我的连接。

使用 Windows 套接字连接到 Linux 服务器套接字是否存在问题?

            IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("IPADDRESS"), 6004);
// Create a TCP/IP socket.
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// Connect the socket to the remote endpoint. Catch any errors.
try
{
if (!sender.Connected)
sender.Connect(remoteEP);

string data = new Client().Test();

DE_ISO8583 de = new ISO8583().Parse(data);

data = data.Length.ToString().PadLeft(4, '0') + data;
byte[] msg = Encoding.ASCII.GetBytes(data);

int bytesSent = sender.Send(msg);

//// Receive the response from the remote device.
int bytesRec = sender.Receive(bytes);
Console.WriteLine("Received = {0}",
Encoding.ASCII.GetString(bytes, 0, bytesRec));

//sender.Disconnect(true);

//sender.Shutdown(SocketShutdown.Both);
//sender.Close();
}
catch (ArgumentNullException ane)
{
Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
}
catch (SocketException se)
{
Console.WriteLine("SocketException : {0}", se.ToString());
}
catch (Exception e)
{
Console.WriteLine("Unexpected exception : {0}", e.ToString());
}

最佳答案

服务器可能由于没有事件而关闭连接。启用 keepalive 选项将定期向服务器发送一个空数据报以保持连接处于事件状态。请参阅下面的代码

            TcpClient client = new TcpClient();
client.Client.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.KeepAlive, true);​

关于c# - Linux 服务器套接字到 Windows 客户端套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com