C# Socket通讯,针对同一客户端的二次连接请求的疑问?这问题我都不知道怎么问了 ,拜托大神帮帮忙
第一次在这里提问好紧张,你不知道菜会不知道会被骂啊 。 我要实现的是客户端监听到服务端断线了后,就开始10秒发一起连接请求,直到服务端连接上, 与服务端连接 ,可是很明显我这个方法会一直向服务端发送套接字,这样导致服务端启动后 ,收到同一个客户端的好多个请求 ,也就是连接了好多个ip一样的客户端 ,服务端还会停止工作
System.Timers.Timer time = new System.Timers.Timer(60000);//定时器
private void ContentServer(object source, System.Timers.ElapsedEventArgs e)
{
try
{
//定义一个套字节监听 包含3个参数(IP4寻址协议,流式连接,TCP协议)
socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//获取文本框输入的服务端IP和Port
IPAddress serverIPAddress = IPAddress.Parse(txtIP.Text.Trim());
int serverPort = int.Parse(txtPort.Text.Trim());
IPEndPoint endpoint = new IPEndPoint(serverIPAddress, serverPort);
//向指定的ip和端口号的服务端发送连接请求 用的方法是Connect 不是Bind
socketClient.Connect(endpoint);
//创建一个新线程 用于监听服务端发来的信息
threadClient = new Thread(RecMsg);
//将窗体线程设置为与后台同步
threadClient.IsBackground = true;
//启动线程
threadClient.Start();
txtMsg.AppendText("已与服务端建立连接,可以开始通信...\r\n");
time.Enabled = false;
time.Stop();
//btnConnectToServer.Enabled = false;
}
catch (Exception)
{
txtMsg.AppendText("服务端已经断开连接,请等待...\r\n");
}
}
/// <summary>
/// 接受服务端发来信息的方法
/// </summary>
string strRecMsg;
//定义一个委托
delegate void Advice(string ss);
private void RecMsg()
{
strRecMsg = null;
while (true) //持续监听服务端发来的消息
{
strRecMsg = null;
int length = 0;
byte[] buffer = new byte[SendBufferSize];
try
{
//将客户端套接字接收到的字节数组存入内存缓冲区, 并获取其长度
length = socketClient.Receive(buffer);
}
catch (SocketException ex)
{
txtMsg.AppendText("套接字异常消息:" + ex.Message + "\r\n");
txtMsg.AppendText("服务端已断开连接\r\n");
//启用定时监听
time.Elapsed += new System.Timers.ElapsedEventHandler(ContentServer);
time.AutoReset = true ;
time.Enabled = true;
break;
}
...全文
相关推荐
C# winform Socket 即时通讯
C#提供了多线程(Thread)和异步编程模型(Task、async/await)来实现这一目标,确保服务器能够高效地处理每个客户端的请求而不阻塞其他请求。
C# Socket通讯实战指南与源码示例
Socket通信是计算机网络中不同设备间进行数据交换的一种机制。它提供了一种允许数据从一个网络应用传输到另一个网络应用的方式,使用端口号来区分同一台计算机上不同的应用服务。
C# Socket通讯框架,封装了Client和Server端类库,带实例
一旦有客户端连接请求,Server端就会创建一个新的Socket与客户端进行通信。而Client端则负责发起连接请求,连接成功后,同样通过Socket进行数据的收发。"
c# socket同步通讯 异步通讯 客户端 服务端 实例
C#作为.NET框架的一部分,提供了强大的Socket编程接口,使得开发者能够创建高效、可靠的网络应用程序。本文将深入探讨C#中的Socket同步通讯与异步通讯,以及如何构建客户端和服务端程序。
C# Socket通讯/TCP通讯,完整代码demo
**监听(Listen)**:使用Listen方法设置最大连接队列长度,开始监听客户端的连接请求。4.


