TcpClient类与TcpListener类

Posted zhaotianff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TcpClient类与TcpListener类相关的知识,希望对你有一定的参考价值。

TcpClient类

 1        //构造方法1
 2             TcpClient t = new TcpClient();
 3             t.Connect("www.163.com", 8000);
 4             //构造方法2
 5             IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.10.27"),8000);
 6             TcpClient t2 = new TcpClient(iep);
 7             t2.Connect("www.163.com", 8000);//也可以使用Connect方法与远程设备连接
 8             //构造方法3
 9             TcpClient t3 = new TcpClient("www.163.com", 8000);
10 
11 
12             //常用方法
13             //Close();      关闭TCP连接
14             //Connect();    用于与远程设备建立TCP连接
15             //GetStream     返回用于发送和接收数据的NetworkStream
16             //GetType()     获取当前实例的Type
17 
18             //常用属性
19             //Availabe      获取已经从网络接收且可供读取的数据量
20             //Client        获取或设置基础Socket
21             //Connected     获取一个值,该值指示TcpClient的基础Socket是否已连接到远程主机
22             //ExclusiveAddressUse   获取或设置Boolean值,该值指定TcpClient是否只允许一个客户端使用端口
23             //LingerState   得到或者设置套接字保持时间
24             //NoDelay       得到或者设置套接接字保持的时间
25             //ReceiverBufferSize        得到或设置TCP接收缓冲区的尺寸
26             //ReceiveTimeout        得到或设置套接字接收数据的超时时间
27             //SendBufferSize    得到或者设置TCP发送缓冲区的大小
28             //SendTimeOut       得到或者设置套接字发送数据的超时时间

TcpListener类:

 1          //构造函数
 2             //TcpListener(int port);
 3             //TcpListener(IPEndPoint ipe);
 4             //TcpListener(IPAddress addr,int port);
 5             //至少需要一个参数,那就是端口号
 6 
 7             //TcpListener类的方法
 8             //AcceptSocket  从端口处接收一个连接并赋予它Socket对象
 9             //AcceptTcpClient   从端口处接收一个连接并赋予它TcpClient对象
10             //Pending       确定是否有挂起的连接请求
11             //Start         开始侦听传入的连接请求
12             //Stop          关闭侦听器
13             
14 
15             //生成TcpListener对象并收听流入连接的过程代码如下:
16             //初始化对象
17             TcpListener Server = new TcpListener(IPAddress.Parse("192.168.1.1"), 8000);
18             //开始监听端口
19             Server.Start();
20             //这个对象接收从客户端发送来的数据
21             TcpClient newclient = Server.AcceptTcpClient();

测试代码:

 1 //Client
 2 
 3 static void Main(string[] args)
 4         {
 5             try
 6             {
 7                 //建立TcpClient对象,并且连接到4001上的localhost
 8                 TcpClient newclient = new TcpClient();
 9                 newclient.Connect("127.0.0.1", 4001);
10                 NetworkStream stm = newclient.GetStream();
11                 //利用NetworkStream对象发送数据
12                 //byte[] sendBytes = Encoding.ASCII.GetBytes("Data is coming" + "here");
13 
14                 string strToSend = Console.ReadLine();
15                 byte[] sendBytes = Encoding.ASCII.GetBytes(strToSend);
16 
17                 stm.Write(sendBytes, 0, sendBytes.Length);
18                 //关闭TcpClient
19                 newclient.Close();
20                 Console.ReadLine();
21             }
22             catch(Exception e)
23             {
24                 //输出异常信息
25                 Console.WriteLine(e.ToString());
26                 Console.WriteLine("Data has not been received");
27                 Console.ReadLine();
28             }
29         }
 1 //Server
 2 
 3 static void Main(string[] args)
 4         {
 5             //服务器简单的侦听器编写
 6             try
 7             {
 8                 //创建TcpListener对象,侦听端口4001,用Start()方法进行侦听
 9                 TcpListener listener = new TcpListener(4001);
10                 listener.Start();
11                 //AcceptTcpClient()方法接受一个连接请求,返回一个TcpClient,使用它的GetStream方法来创建NetworkStream对象
12                 TcpClient tc = listener.AcceptTcpClient();
13                 NetworkStream stm = tc.GetStream();
14                 byte[] redBuf = new byte[50];
15                 //用Read()方法读取数据
16                 stm.Read(redBuf, 0, 50);
17                 //显示数据
18                 Console.WriteLine(Encoding.ASCII.GetString(redBuf));
19                 stm.Close();
20                 Console.ReadLine();
21             }
22             catch(Exception e)
23             {
24                 Console.WriteLine(e.ToString());
25                 Console.ReadLine();
26             }
27         }

 

以上是关于TcpClient类与TcpListener类的主要内容,如果未能解决你的问题,请参考以下文章

c#_TcpListener&TcpClient

c#_TcpListener&TcpClient

从服务器(tcplistener)向客户端(tcpclient)发送消息

TCPListener和TCPClient之间的通信代码

C#使用TcpListener和TcpClient实现简单通信

关闭 TcpListener 和 TcpClient 连接的正确顺序(哪一侧应该是主动关闭)