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侦听
}

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

                                              图2 TcpClient类和TcpListener类的使用

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

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的TcpClientTcpListener是用于创建和处理TCP连接的TcpClient用于创建TCP客户端,而TcpListener用于创建TCP服务器。 TcpClient用于在客户端与服务器之间建立连接。可以通过TcpClient对象的构造函数创建实例,并使用Connect方法连接到指定的服务器和端口。一旦连接建立,就可以使用NetworkStream来发送和接收数据。 以下是一个简单的示例代码,演示了如何使用TcpClient发送数据: ```csharp using System; using System.Net.Sockets; class Program { static void Main() { try { TcpClient client = new TcpClient("127.0.0.1", 8080); NetworkStream stream = client.GetStream(); string message = "Hello, Server!"; byte[] data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); Console.WriteLine("Message sent to the server."); stream.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } ``` TcpListener用于创建TCP服务器,它监听指定的端口,并等待客户端的连接请求。可以使用AcceptTcpClient方法来接受客户端连接,并返回一个TcpClient对象以进行数据传输。 以下是一个简单的示例代码,演示了如何使用TcpListener接收数据: ```csharp using System; using System.Net; using System.Net.Sockets; class Program { static void Main() { TcpListener server = null; try { // 设置监听IP和端口 IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); int port = 8080; server = new TcpListener(ipAddress, port); // 开始监听 server.Start(); Console.WriteLine("Server started. Waiting for clients..."); // 接受客户端连接 TcpClient client = server.AcceptTcpClient(); // 获取客户端的网络流 NetworkStream stream = client.GetStream(); byte[] data = new byte[1024]; // 读取客户端发送的数据 int bytesRead = stream.Read(data, 0, data.Length); string message = System.Text.Encoding.ASCII.GetString(data,0, bytesRead); Console.WriteLine("Received message: " + message); stream.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { if (server != null) server.Stop(); } } } ``` 这些是TcpClientTcpListener的基本用法示例。你可以根据你的需求进行进一步的开发和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值