码迷,mamicode.com
首页 > Windows程序 > 详细

c# 使用TCP连接(server)

时间:2017-07-05 15:25:51      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:int end   prot   lis   发送   ram   成功   odi   toc   网络   

效果图

技术分享

代码实现

用的变量:

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             //将套接字的监听队列长度限制为20
12             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)

标签:int end   prot   lis   发送   ram   成功   odi   toc   网络   

原文地址:http://www.cnblogs.com/zuoz/p/7121069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!