请教Socket通讯的问题
这是Socket的服务端,请看代码中的注释部分
请问如上注释部门的问题怎么解决?
s.Listen(100);
while (true)
{
byte[] bytes = new byte[1025];
Socket ss = s.Accept();
try
{
ss.ReceiveTimeout = 0;
while (true)
{
ss.Receive(bytes);
//这里我如何检测对方的连接已经断开?本来指望对方断开后这里会出现异常自动退出循环的,问题是对方断开后,依然可以接收到数据,并不发生异常
string rmsg = Encoding.Default.GetString(bytes);
rmsg = rmsg.Substring(0, rmsg.IndexOf('\0'));
textBox1.Text = textBox1.Text + rmsg;
if (rmsg == "close") break;
//当连接方没有发送close直接断开后,这里会进入死循环,并且持续得到连接方最后发来的一笔数据
}
ss = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
ss.Close();
}
}
请问如上注释部门的问题怎么解决?
...全文
相关推荐
Java socket通讯实现过程及问题解决
主要介绍了Java socket通讯实现过程及问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
GOLANG语言实现SOCKET通讯粘包问题解决示例
GOLANG语言实现SOCKET通讯粘包问题解决示例,对于TCP传输分段,组合无明显界线,造成传输和接收数据包不完整的解决方法!
C# Socket通讯常见问题详解
C# Socket通信三大问题之数据包界限符问题。 根据原项目中交通部标准,在连续观测站中数据包中,使用??两个字符表示有效数据包开始和结束。实际项目有各自的具体技术规范 C# Socket通信三大问题之数据包不连续问题。 在TCP/IP等通信中,由于时延等原因,一个数据包被Socket做两次或多次接收,此时在接收第一个包后,必须保存到TSession的DatagramBuffer中,在以后一并处理 C# Socket通信三大问题包并发与重叠问题。 由于客户端发送过快或设备故障等原因,一次接收到一个半、两个或多个包文。此时,也需要处理、一个半、两个或多个包
进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)
1、原理文章:https://blog.csdn.net/z929118967/article/details/109616038 采用Local Socket方案(TCP)创建服务端和客户端从而达到通讯效果。 2、应用场景:解决扩展和容器应用的实时通讯问题
Socket 通讯
socket的通讯,有头部信息的通讯,进行接收头部信息后,然后在读取信息!


