C# socket 客户端发送成功,服务端没有接收到也没报错
private static bool SendString(string strMessage, ref string rsp)
{
bool result = false;
Socket c = null;
int sendBytes = 0;
try
{
string host = _desthost;
int port = _destport;
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例
c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
c.ReceiveTimeout = 30000;
c.Connect(ipe);//连接到服务器
byte[] bs = Encoding.Default.GetBytes(strMessage);
sendBytes = c.Send(bs, bs.Length, 0);//发送信息
WriteLog("SEND=" + strMessage);
byte[] recvBytes = new byte[1024];
c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
rsp = Encoding.Default.GetString(recvBytes, 0, recvBytes.Length).TrimEnd('\0');
WriteLog("RECV=" + rsp);
c.Close();
result = true;
}
catch (Exception ex)
{
rsp = ex.Message;
result = false;
WriteSysLog(ex.Message + "\r\n[data=" + strMessage + "]");
}
finally
{
if(c != null)
c.Close();
}
return result;
}以上是客户端代码。服务端是另一个公司开发的,我无法获得。
四台机器,每台机器上都装了一个客户端和一个服务端,通讯IP设的是127.0.0.1,端口是约定好的。每天早上开开进行通讯,晚上九点结束,关闭客户端和服务端,关机。每隔两三天左右会出现一次,四台机器同时出现通讯失败,客户端这边能看到发送成功的日志,过了30秒之后抛出了异常 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 服务端那边没收到消息,也没有抛异常。Telnet相应端口,黑框框正常弹出。重启客户端,仍然是send成功,receive抛异常,再重启服务端后,恢复正常通讯。整个异常期间服务端没有抛错,也没有接收到数据。
有没有遇到过的,求赐教。
...全文
相关推荐
Socket聊天程序(一个服务端,多个客户端)
Socket聊天程序(一个服务端,多个客户端) 可通过设置IP地址,进行局域网聊天,互联网聊天。。详细配置可以看下我blog的文章。 blog中搜索:Socket聊天程序
C# Socket_服务端向指定的客户端发送消息(包含服务器)
C# Socket服务端向指定的客户端发送消息(包含服务器)
C#基于TCP的Socket多线程通信(包含服务端和客户端)
C#基于TCP的Socket多线程通信(包含服务端和客户端) 代码都有注释,方便新手阅读
socket服务和客户端测试XML文件接收和发送
c#写的用于测试socket按固定格式和协议发送xml文件并解析和接收
C# 使用Socket发送和接收TCP数据
C# 使用Socket发送和接收TCP数据,包含客户端和服务器端,发送Send,监听Listen ,C#运行环境VS2010


