首页 > 代码库 > c# 使用TCP连接(server)

c# 使用TCP连接(server)

效果图

技术分享

代码实现

用的变量:

1      Thread threadWatch = null; //负责监听客户端的线程2         Socket socketWatch = null; //负责监听客户端的套接字3         //创建一个负责和客户端通信的套接字 4         List<Socket> socConnections = new List<Socket>();5         List<Thread> dictThread = new List<Thread>();

 

启动服务按钮代码如下:

 1 private void btnServerConn_Click(object sender, EventArgs e) 2         { 3             //定义一个套接字用于监听客户端发来的信息  包含3个参数(IP4寻址协议,流式连接,TCP协议) 4             socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 5             //服务端发送信息 需要1个IP地址和端口号 6             IPAddress ipaddress = IPAddress.Parse(txtIP.Text.Trim()); //获取文本框输入的IP地址 7             //将IP地址和端口号绑定到网络节点endpoint上  8             IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse(txtPORT.Text.Trim())); //获取文本框上输入的端口号 9             //监听绑定的网络节点10             socketWatch.Bind(endpoint);11             //将套接字的监听队列长度限制为2012             socketWatch.Listen(20);13             //创建一个监听线程 14             threadWatch = new Thread(WatchConnecting);15             //将窗体线程设置为与后台同步16             threadWatch.IsBackground = true;17             //启动线程18             threadWatch.Start();19             //启动线程后 txtMsg文本框显示相应提示20             txtMsg.AppendText("开始监听客户端传来的信息!" + "\r\n");21 22         }

监听客户端消息代码如下:

 1      /// <summary> 2         /// 监听客户端发来的请求 3         /// </summary> 4         private void WatchConnecting() 5         { 6             while (true)  //持续不断监听客户端发来的请求 7             { 8                 Socket socConnection = socketWatch.Accept(); 9                 txtMsg.AppendText("客户端连接成功" + "\r\n");10                 //创建一个通信线程 11                 ParameterizedThreadStart pts = new ParameterizedThreadStart(ServerRecMsg);12                 Thread thr = new Thread(pts);13                 thr.IsBackground = true;14                 socConnections.Add(socConnection);15                 //启动线程16                 thr.Start(socConnection);17                 dictThread.Add(thr);18             }19         }

将消息发送到客户端

 1      //发送信息到客户端 2         private void btnSendMsg_Click(object sender, EventArgs e) 3         { 4             //调用 ServerSendMsg方法  发送信息到客户端 5             ServerSendMsg(txtSendMsg.Text.Trim()); 6         } 7  8         /// <summary> 9         /// 发送信息到客户端的方法10         /// </summary>11         /// <param name="sendMsg">发送的字符串信息</param>12         private void ServerSendMsg(string sendMsg)13         {14             //将输入的字符串转换成 机器可以识别的字节数组15             byte[] arrSendMsg = Encoding.UTF8.GetBytes(sendMsg);16             //向客户端发送字节数组信息17             foreach (Socket socConnection in socConnections)18             {19                 socConnection.Send(arrSendMsg);20             }21 22             //将发送的字符串信息附加到文本框txtMsg上23             txtMsg.AppendText("So-flash:" + GetCurrentTime() + "\r\n" + sendMsg + "\r\n");24             //}25 26         }

 

c# 使用TCP连接(server)