7-1 网络编程技术(中)

简介:

7-3  TCP网络编程

本节学习目标:
n 掌握TCP类的使用
n 掌握TcpListener类和TcpClient类基本方法

7-3-1    System.Net.Sockets命名空间

包含了一些相关类,允许直接发送TCP网络请求或者某个端口监听TCP网络请求。提供了 Windows Sockets接口的托管实现,主要成员,如表7-4所示:
说明
Socket
实现套接字接口
SocketException
发生套接字错误时引发的异常
 TCP 网络服务提供客户端连接。
 TCP 网络客户端侦听连接。
提供用户数据报 (UDP) 网络服务。
枚举
说明
指定 Socket 类的实例可以使用的寻址方案。
指定 Socket 类的实例可以使用的协议类型。
指定 Socket 类支持的协议。
指定套接字的发送和接收行为。
为 Socket.SetSocketOption 和 Socket.GetSocketOption 方法定义套接字选项级别。
7-4

7-3-2   TCP

主要使用TCPClient类,为TCP网络服务提供连接,包括相关属性和方法来控制连接,通过流对象附带读写功能,主要成员,如表7-5所示:
方法
说明
Connect
使用指定的主机名和端口号将客户端连接到 TCP 主机。
GetStream
返回用于发送和接收数据的 NetworkStream
释放此 TcpClient 实例,而不关闭基础连接。
属性
说明
获取或设置基础 Socket
SendTimeout
获取或设置 TcpClient 等待发送操作成功完成的时间量。
SendBufferSize
获取或设置发送缓冲区的大小。
获取或设置在初始化一个读取操作以后 TcpClient 等待接收数据的时间量。
获取或设置接收缓冲区的大小。
7-5
TcpListener类用于监听和接收连接请求,如表7-6所示:
方法
说明
Start
开始侦听传入的连接请求。
接受挂起的连接请求。
关闭侦听器。
7-6
这里我们传输数据时,主要用到了NetworkStream,它代表的是网络中传输的数据流,在发生或接收数据时,可从流中获取字节数组或对应的字符串。主要成员,如表7-7所示:
方法
说明
Read
 NetworkStream 读取数据。
ReadByte
从流中读取一个字节,并将流内的位置向前推进一个字节,或者如果已到达流的末尾,则返回 -1
Write
将数据写入 NetworkStream
将一个字节写入流内的当前位置,并将流内的位置向前推进一个字节。
属性
说明
获取流上可用数据的长度。
Socket
获取基础 Socket
7-7

1   案例学习:简单的通信程序

本次实验目标是使用Tcp相关类实现简单通信。
u  实验步骤(1):
新建一个Winform项目,并在当前新建项目的窗体上添加两个按钮和文本框。本案例用以实现在文本框中输入要传输的信息,在服务端应用程序中启动监听,接收来自客户端的消息。界面布局设置如图7-5左侧图像所示。
u  实验步骤(2):双击窗体界面,添加功能源代码如下:
///   <summary>
///   启动 按钮的鼠标单击事件
///   </summary>
private void button1_Click(object sender, EventArgs e)
{
listen = new TcpListener(9999);
listen.Start();
   listBox1.Items.Add(" 服务器启动");
   Socket socket = listen.AcceptSocket();
   netstream = new NetworkStream(socket);
}
///   <summary>
///   接收 按钮的鼠标单击事件
///   </summary>
private void btnReceive_Click(object sender, EventArgs e)
{
if (netstream.DataAvailable)
{
byte[] getdata = new byte[1024];
int length = netstream.Read(getdata, 0, getdata.Length);
string msg = Encoding.Default.GetString(getdata, 0, length);
listBox1.Items.Add(" 收到客户端消息>>");
listBox1.Items.Add(msg);
}
}
u 实验步骤(3):
再在当前项目中新建一个Winform窗体,并在窗体上添加一个按钮和文本框,界面布局及构成见图7-5右侧图片所示。本窗体实现目的是当用户在文本框中输入要传输的信息,点击“发送”按钮后,可以将文本框中输入的消息发送出去。
u 实验步骤(4):
    用鼠标双击“发送”按钮,添加功能源代码:
private void btnSend_Click(object sender, EventArgs e)
{
TcpClient client = new TcpClient();
client.Connect("localhost",9999);
netstream = client.GetStream();
if (txtMsg.Text.Trim() == "")
{
MessageBox.Show(" 消息不能为空");
return;
}
byte[] senddata = Encoding.Default.GetBytes(txtMsg.Text);
netstream.Write(senddata, 0, senddata.Length);
netstream.Flush();
}
将解决方案设置为多启动项目,同时启动两个应用程序,在客户端程序中输入消息,在服务端点击接收,可看到消息窗口的变化。如果与远程机器通信,只需将客户端部署到远程机器,并修改Client.Connect()中的连接地址和端口。这里看到的只是单向传输,双向传输则两端程序均需包含相同的发送接收数据的代码。
7-5 信息传输
问题讨论:
1 TcpListener启动监听和TcpClient对象连接到服务端?
先启动监听,然后才能在客户端发生连接。因为 TCP是面向连接的协议,在发送数据之前,应先将套接字与IP地址和端口绑定,并处于监听状态。




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/231843,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
王耀恒:从网络营销老兵到GEO技术布道者
在王耀恒看来,AI时代的技术竞争已从“信息不对称”转向“系统化应用能力”。他的GEO课程体系正是这一理念的体现——技术可以被复制,但深度实践验证的系统框架、认知升级路径和教学转化艺术却构成了难以逾越的壁垒。
|
1月前
|
机器学习/深度学习 人工智能 监控
上海拔俗AI软件定制:让技术真正为你所用,拔俗网络这样做
在上海,企业正通过AI软件定制破解通用化难题。该模式以业务场景为核心,量身打造智能解决方案,涵盖场景化模型开发、模块化架构设计与数据闭环优化三大技术维度,推动技术与业务深度融合,助力企业实现高效、可持续的数字化转型。
|
2月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
229 0
|
4月前
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
133 2
|
6月前
|
机器学习/深度学习 算法 PyTorch
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
深度学习近年来在多个领域取得了显著进展,但其核心组件——人工神经元和反向传播算法自提出以来鲜有根本性突破。穿孔反向传播(Perforated Backpropagation)技术通过引入“树突”机制,模仿生物神经元的计算能力,实现了对传统神经元的增强。该技术利用基于协方差的损失函数训练树突节点,使其能够识别神经元分类中的异常模式,从而提升整体网络性能。实验表明,该方法不仅可提高模型精度(如BERT模型准确率提升3%-17%),还能实现高效模型压缩(参数减少44%而无性能损失)。这一革新为深度学习的基础构建模块带来了新的可能性,尤其适用于边缘设备和大规模模型优化场景。
307 16
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
|
6月前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
187 15
|
6月前
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
180 4
|
7月前
|
存储 双11 数据中心
数据中心网络关键技术,技术发明一等奖!
近日,阿里云联合清华大学与中国移动申报的“性能可预期的大规模数据中心网络关键技术与应用”项目荣获中国电子学会技术发明一等奖。该项目通过端网融合架构,实现数据中心网络性能的可预期性,在带宽保障、时延控制和故障恢复速度上取得重大突破,显著提升服务质量。成果已应用于阿里云多项产品及重大社会活动中,如巴黎奥运会直播、“双十一”购物节等,展现出国际领先水平。
|
7月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
249 22

热门文章

最新文章