zoukankan      html  css  js  c++  java
  • winform网络编程之TcpClient类,TcpListener类和UdpClient类

    TcpClient类和TcpListener类


    (1)TcpClient的用途:

    用于在同步阻止模式下通过网络来链接、发送和接受流数据,在此情况下,必须有侦听此连接的请求,而侦听的任务就交给TcpListener实例或Socket实例


    (2)TcpClient的两种方法连接到侦听器

    第一种:创建一个TcpClient,并调用3个可用的Connect方法之中的一个

    另外一种:使用远程主机的主机名和port号创建TcpClient,此构造函数将自己主动尝试一个连接


    (3)TcpClient的经常使用属性和方法

    Available属性             获取已经从网络接收且可供读取的数据量

    Connected属性             获取一个值。该值指示TcpClient的基础Socket是否已连接                           到远程主机

    ReceiveBufferSize属性     获取或设置接收缓冲区的大小

    SendBufferSize属性        获取或设置发送缓冲区的大小

    Close方法                 释放TcpClient实例,不关闭基础连接

    Connect方法               使用指定的主机名和port号将client连接到TCP主机

    GetStream方法             返回用于发送和接收数据的NetwordStream


    (4)TcpListener经常使用的属性和方法

    LocalEndPoint属性                   获取当前TcpListener的基础EndPoint

    Server属性                          获取基础网络Socket

    AcceptSocket/AcceptTcpClient方法    接收挂起的链接请求

    Start方法                           開始侦听传入的连接请求

    Stop方法                            关闭侦听器


    (5)实例代码(部分)

            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 = "等待连接...
    ";
                TcpClient tcpclient = null;                         //实例化一个TcpClient对象。并赋值为空
                if (tcplistener.Pending())                          //推断是否有挂起的连接请求
                    tcpclient = tcplistener.AcceptTcpClient();      //使用AcceptTcpClient初始化TcpClient对象
                else
                    tcpclient = new TcpClient(textBox1.Text, port); //使用TcpClient的构造函数初始化TcpClient对象
                richTextBox1.Text += "连接成功!
    ";
                tcpclient.Close();                                  //关闭TcpClient连接
                tcplistener.Stop();                                 //停止TcpListener侦听
            }


    UdpClient类


    (1)UdpClient类用于在阻止同步模式下发送和接收无连接的UDP数据。

    UDP是无连接的传输协议,所以不须要在发送和接收数据前建立远程主机连接。


    (2)两种方法建立默认远程主机

    第一种:使用远程主机名和port号作为參数创建UdpClient类的实例

    另外一种:创建UdpClient类的实例,然后调用Connect类的实例


    (3)UdpClient类经常使用的属性和方法

    Available属性           获取从网络接收的可读取的数据量

    Client属性              获取或设置基础网络的Socket

    Close方法               关闭UDP连接

    Connect方法             简历默认远程主机

    Receive方法             返回已由远程主机发送的UDP数据报

    Send方法                将UDP数据报发送到远程主机


    (3)实例代码:

    textBox1:ip地址

    textBox2:port号

    textBox3:发送的信息

    richTextBox:显示信息


            private void button1_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = string.Empty;
                //实例化UdpClient对象
                UdpClient udpclient = new UdpClient(Convert.ToInt32(textBox2.Text));
                //调用UdpClient对象的Connect建立默认远程主机
                udpclient.Connect(textBox1.Text, Convert.ToInt32(textBox2.Text));
                //定义一个字节数组,用来存放发送到远程主机的信息
                Byte[] sendBytes = Encoding.Default.GetBytes(textBox3.Text);
                //调用UdpClient对象的Send方法将Udp数据报发送到远程主机
                udpclient.Send(sendBytes, sendBytes.Length);
                //实例化IPEndPoint对象。用来显示响应主机的标识
                IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Any, 0);
                //调用UdpClient对象的Receive方法获得从远程主机返回的Udp数据报
                Byte[] receiveBytes = udpclient.Receive(ref ipendpoint);
                //将获得的Udp数据报转换为字符串形式
                string returnData = Encoding.Default.GetString(receiveBytes);
                richTextBox1.Text = "接收到的信息:" + returnData.ToString();
                //使用IPEndPoint对象的Address和Port属性获得响应主机的IP地址和port号
                richTextBox1.Text += "
    这条信息来自主机" + ipendpoint.Address.ToString()
                    + "上的" + ipendpoint.Port.ToString() + "port";
                //关闭UdpClient连接
                udpclient.Close();
            }


  • 相关阅读:
    模块和包——Python
    异常——Python
    单例——Python
    类属性和类方法——Python
    继承和多态——Python
    私有属性和私有方法——Python
    面向对象封装案例——Python
    面相对象基础语法——Python
    类、接口作为成员变量类型——Java
    内部类的概念和分类——Java
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6757204.html
Copyright © 2011-2022 走看看