C# 编程 TCP协议 (基本知识点)

TCP通讯机制是:一对一的传递机制,具体分为客户端和服务器。就好比打电话的方式,客户端(主动打电话的人),服务器(接听电话的人)。

二者的分别作用是:客户端:1主动打电话(也就是试连接) 2数据传送

                         服务器:1时时刻刻在电话旁边的等电话(侦听) 2 数据传递

功能实现的步骤是这样的:

                      第一步:连接彼此间的数据传送链  

                         代码说明: 试连接(客户端)

                                         TcpClient client = new TcpClient(_RemoteIp, _RemotePort);//并启动了,和连接作用

                                         或者TcpClient tclient = new TcpClient(); tclient.Connect("192.168.1.100", 8080);

                                 侦听(服务器)

                                  IPAddress ipa = IPAddress.Parse("192.168.1.100");

                                  TcpListener myListener = new TcpListener(ipa, 8080);

                                  myListener.Start();

                     如果没有侦听,就会出现报错,并且二者一直在连接,连接成功后才会去执行下一步代码

                第二步:数据链已经建立好了,就要完成数据的传送 客户端和服务器都有数据发送,接受的功能它们是一一对应使用的,不可能同一客户端即完成传送数据和接受数据的内容,不能去读出缓存中的内容

                     客户端功能实现:

                               1.发送:NetworkStream ns = tclient.GetStream();

                                         String content = "要发送的内容";

 

                                         byte[] data = Encoding.Unicode.GetBytes(content);

 

                                         ns.Write(data, 0, data.Length);

 

                                2.接受:if (tclient.Available > 0)
                                {
                                   byte[] data = new byte[1024];
                                   ns.Read(data, 0, 1024);
                                   String content = Encoding.Unicode.GetString(data);
                                }

 

                     服务器端的功能实现: Socket mySocket = myListener.AcceptSocket();

                              1.发送:mySocket.Send(Encoding.Unicode.GetBytes("要发送的内容"));

                              2.接收:byte[] data = new byte[1024];
                               if (mySocket.Available > 0)
                               {
                                   mySocket.Receive(data);
                                   String content = Encoding.Unicode.GetString(data);
                               }

 

基本的实现了数据传递的功能了,以下对一些细节说明一下:

1.连接地址通常包括两部分——主机名和端口,如www.yesky.com:80中,www.yesky.com就是主机名,80指主机的80端口;另一种方式是主机名也可以用IP地址代替。

2.在使用结束后,需要把相关类关闭掉,避免下次使用时,出现端口占用报错

3. 对于服务器的侦听,需要建立一个建立一个无限循环来实现侦听的功能

4.数据传递的过程中,需要进行字符串的转换,采用不同的编码形式,同样也存在不同的解码方式,类似于串口的通讯机制

 

                                

原文地址:https://www.cnblogs.com/liuxiaowei0543/p/3124284.html