我有一个与LRS(远程系统)发送器通信的同步客户端套接字,它接受XML输入和TCPIP连接。我能够与设备建立连接并在连接后收到响应;但是当我试图发送一些文本并再次呼叫接收时,没有回复或最终超时。你能解释一下原因吗?
我的示例代码:
Socket tcpSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
System.Net.IPAddress[] IPs = System.Net.Dns.GetHostAddresses("valid_IP_address");
tcpSocket.Connect(IPs[0], PORT_NUMBER);
int nBytes = 0;
byte[] RcvBytes = new byte[BUF_SIZE];
if (tcpSocket.Connected)
{
tcpSocket.ReceiveTimeout = 60000; //1 minute timeout
//connected is true and below Receive call returns some bytes
//RcvBytes contains a valid response, ie, <LRSN services="blah, blah" ... />
nBytes = tcpSocket.Receive(RcvBytes, 0, tcpSocket.Available, SocketFlags.None);
}
//below Send returns 8 bytes, the lenth of "SomeText"
nBytes = tcpSocket.Send(Encoding.ASCII.GetBytes("SomeText"));
//*** FAILS, below Receive call never returns, eventually time out
nBytes = tcpSocket.Receive(RcvBytes, 0, tcpSocket.Available, SocketFlags.None);
答案 0 :(得分:1)
我想你可能遇到过这个问题:
LRSN消息传输所有消息都是基于XML的。有了一些XML 解析器,很难处理连续的XML流。缓解 解析传入的消息,以下消息成帧方案是 used:•换行符('\ n')用于分隔a的结尾 信息。两个换行符之间的数据应该形成可解析的XML 文件(即所有标签均衡)。
所以尝试通过发送一些新行。