TcpClient类和TcpListener类的常用属性、方法及说明

 TcpClient类用于在同步阻止模式下通过网络来连接、发送和接收流数据。为使TcpClient连接并交换数据,使用TcpProtocolType类创建的TcpListener实例或Socket实例必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器。

  ☆ 创建一个TcpClient,并调用3个可用的Connect方法之一。

  ☆ 使用远程主机的主机名和端口号创建TcpClient,该构造函数将自动尝试一个连接。

  TcpListener类用于在阻止同步模式下侦听和接受传入的连接请求。可使用TcpClient类或Socket类来连接TcpListener,并且可以使用IPEndPoint、本地IP地址及端口号或者仅使用端口号来创建TcpListener实例对象。

注意

  如果要在同步阻止模式下发送无连接数据报,请使用UdpClient类。

 

 

   TcpClient类的常用属性、方法及说明如表1所示。            

                        表1 TcpClient类的常用属性、方法及说明 

属性及方法 说明
Available属性 获取已经从网络接收且可供读取的数据量
Client属性 获取或设置基础Socket
Connected属性 获取一个值,该值指示TcpClient的基础Socket是否已连接到远程主机
ReceiveBufferSize属性 获取或设置接收缓冲区的大小
ReceiveTimeout属性 获取或设置在初始化一个读取操作以后TcpClient等待接收数据的时间量
SendBufferSize属性 获取或设置发送缓冲区的大小
SendTimeout属性 获取或设置TcpClient等待发送操作成功完成的时间量
BeginConnect方法 开始一个对远程主机连接的异步请求
Close方法 释放此TcpClient实例,而不关闭基础连接
Connect方法 使用指定的主机名和端口号将客户端连接到TCP主机
EndConnect方法 异步接收传入的连接尝试
GetStream方法 返回用于发送和接收数据的NetworkStream
   

 

TcpListener类的常用属性、方法及说明如表2所示。

                 表2 TcpListener类的常用属性、方法及说明

属性及方法 说明
LocalEndPoint属性 获取当前TcpListener的基础EndPoint
Server属性 获取基础网络Socket
AcceptSocket/AcceptTcpClient方法 接受挂起的连接请求
BeginAcceptSocket/BeginAcceptTcpClient方法 开始一个异步操作来接收一个传入的连接尝试
EndAcceptSocket方法 异步接收传入的连接尝试,并创建新的Socket来处理远程主机通信
EndAcceptTcpClient方法 异步接收传入的连接尝试,并创建新的TcpClient来处理远程主机通信
Start方法 开始侦听传入的连接请求
Stop方法 关闭侦听器
   

 

注意

  Stop方法用来关闭TcpListenerStop(侦听),但不会关闭任何已接受的连接。

  下面演示TcpClient类和TcpListener类的使用方法。

  【例】新建一个Windows应用程序,在窗体中添加两个TextBox控件、一个Button控件和一个RichTextBox控件。其中,两个TextBox控件分别用来输入要连接的主机及端口号,Button控件用来执行连接远程主机操作,RichTextBox控件用来显示远程主机的连接状态。

         代码如下:

private void button1_Click(object sender, EventArgs e)
{
    //实例化一个TcpListener对象,并初始化为空
    TcpListener tcplistener = null;
    //实例化一个IPAddress对象,用来表示网络IP地址
    IPAddress ipaddress = IPAddress.Parse(textBox1.Text);
    //定义一个int类型变量,用来存储端口号
    int port = Convert.ToInt32(textBox2.Text);
    tcplistener = new TcpListener(ipaddress, port);     //初始化TcpListener对象
    tcplistener.Start();                                //开始TcpListener侦听
    richTextBox1.Text = "等待连接...\n";
    TcpClient tcpclient = null;                         //实例化一个TcpClient对象,并赋值为空
    if (tcplistener.Pending())                          //判断是否有挂起的连接请求
        tcpclient = tcplistener.AcceptTcpClient();      //使用AcceptTcpClient初始化TcpClient对象
    else
        tcpclient = new TcpClient(textBox1.Text, port); //使用TcpClient的构造函数初始化TcpClient对象
    richTextBox1.Text += "连接成功!\n";
    tcpclient.Close();                                  //关闭TcpClient连接
    tcplistener.Stop();                                 //停止TcpListener侦听
}

程序的运行结果如下图所示。

TcpClient类和TcpListener类的常用属性、方法及说明_第1张图片

                                              图2 TcpClient类和TcpListener类的使用

http://www.longziyong.cn/post/csharp/2015/06/414.html

 

 

 

你可能感兴趣的:(C#)