博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform网络编程之TcpClient类,TcpListener类和UdpClient类
阅读量:6632 次
发布时间:2019-06-25

本文共 3446 字,大约阅读时间需要 11 分钟。

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 = "等待连接...\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侦听        }

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 += "\n这条信息来自主机" + ipendpoint.Address.ToString()                + "上的" + ipendpoint.Port.ToString() + "port";            //关闭UdpClient连接            udpclient.Close();        }

转载地址:http://lbbvo.baihongyu.com/

你可能感兴趣的文章
Oracle Study之--Oracle TimeZone升级
查看>>
PIM规则总结
查看>>
Amoeba实现mysql主从读写分离2
查看>>
Swift中正则使用正则的几种方式
查看>>
SQL Server 2000 : gethostbyname: Error 11004
查看>>
log4j下载地址及日志文件输入位置配置
查看>>
Tomcat下Servlet配置精解
查看>>
吞吐量与网络流量对应关系剖析
查看>>
新功能:OSS访问日志实时分析
查看>>
在DELL服务器上升级ESXI 5.5
查看>>
ubuntu16.04 双网卡绑定
查看>>
LVS+Keepalived实现高可用群集
查看>>
单目运算符重载为友元函数
查看>>
Vmware vSphere常见问题汇总(三)
查看>>
基于OHCI的USB主机 —— USB设备端口特性清除
查看>>
微软宣布MIX11将发布Silverlight 5 Beta
查看>>
2个sqlserver数据库实例之间数据导入导出
查看>>
Oracle数据库安全资源-2
查看>>
大牛教你查库暴库
查看>>
[推荐]在线测试你的网速
查看>>