|
应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节。(也就是说TCPClient、TCPListener 和 UDPClient 类是用来简化Socket) TcpClient 和 TcpListener 使用 NetworkStream 类表示网络。使用 GetStream 方法返回网络流,然后调用该流的 Read 和 Write 方法。NetworkStream 不拥有协议类的基础套接字,因此关闭它并不影响套接字。 UdpClient 类使用字节数组保存 UDP 数据文报。使用 Send 方法向网络发送数据,使用 Receive 方法接收传入的数据文报。 1.TcpClient using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Net;
namespace tcpclient { class Program { private static int portNum = 11000; private static string hostName = Dns.GetHostName().ToString(); public static void Main(String[] args) { try { Console.WriteLine("主机名字:"+ Dns.GetHostName()); Console.WriteLine("主机IP地址:"+ Dns.GetHostAddresses(Dns.GetHostName())[0]); TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream(); byte[] bytes = new byte[1024]; int bytesRead = ns.Read(bytes, 0, bytes.Length); //将字节流解码为字符串 Console.WriteLine(Encoding.ASCII.GetString(bytes, 0, bytesRead)); client.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); }
} } } 2.TcpListener Start 方法用来开始侦听传入的连接请求。Start 将对传入连接进行排队,直至您调用 Stop 方法或它已经完成 MaxConnections 排队为止。可使用 AcceptSocket 或 AcceptTcpClient 从传入连接请求队列提取连接。这两种方法将阻止。如果要避免阻止,可首先使用 Pending 方法来确定队列中是否有可用的连接请求。 调用 Stop 方法来关闭 TcpListener。 下面的例子给出怎么利用TcpListener监听客户端的请求: using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Net; namespace tcpclient { class Program { private const int portNum = 11000; static void Main(string[] args) { bool done = false; //TcpListener listener = new TcpListener(portNum); //根据VS2005 MSDN 此方法已经过时,不再使用 // IPEndPoint类将网络标识为IP地址和端口号 TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, portNum)); listener.Start(); while (!done) { Console.Write("Waiting for connection..."); TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Connection accepted."); NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try { ns.Write(byteTime, 0, byteTime.Length); ns.Close(); client.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } listener.Stop(); } } }
3.UdpClient · 使用远程主机名和端口号作为参数创建 UdpClient 类的实例。 · 创建 UdpClient 类的实例,然后调用 Connect 方法。 可以使用在 UdpClient 中提供的任何一种发送方法将数据发送到远程设备。使用 Receive 方法可以从远程主机接收数据。 下面的例子演示同一主机不同端口之间的UDP通信: 监听端: using System.Net.Sockets; using System.Text; using System.Net; using System.Threading; namespace Udpclient2 { class Program { static void Main(string[] args) { try { UdpClient udpClient = new UdpClient(12000); string returnData = "client_end"; do { Console.WriteLine("服务器端接收数据:............................."); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); // 此处通过引用传值,获得客户端的IP地址及端口号 Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); //此处获得客户端的数据 returnData = Encoding.UTF8.GetString(receiveBytes); //Encoding.ASCII.GetString(receiveBytes); 此处若用ASCII,不能正确处理中文 Console.WriteLine("This is the message server received: " + returnData.ToString());
Thread.Sleep(3000);
Console.WriteLine("向客户端发送数据:............................."); udpClient.Connect(Dns.GetHostName().ToString(), 11000); // Sends a message to the host to which you have connected. string sendStr = "我来自服务器端:" + DateTime.Now.ToString(); Byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr); //Byte[] sendBytes = Encoding.ASCII.GetBytes(sendStr); 此处若用ASCII,不能正确处理中文 udpClient.Send(sendBytes, sendBytes.Length); Console.WriteLine("This is the message server send: " + sendStr);
} while (returnData != "client_end");
} catch (Exception e) { Console.WriteLine(e.ToString()); } } } }
客户端: using System.Net.Sockets; using System.Text; using System.Net; namespace Udpclient { class Program { static void Main(string[] args) { try { UdpClient udpClient = new UdpClient(11000);
//向服务器发送数据 udpClient.Connect(Dns.GetHostName().ToString(), 12000); // Sends a message to the host to which you have connected. string sendStr = "我来自客户端:" + DateTime.Now.ToString(); Byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr); //Byte[] sendBytes = Encoding.ASCII.GetBytes(sendStr); 此处若用ASCII,不能正确处理中文 udpClient.Send(sendBytes, sendBytes.Length); Console.WriteLine("This is the message client send: " + sendStr);
//等待服务器的答复,收到后显示答复,并结束对话 IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); // 此处通过引用传值,获得客户端的IP地址及端口号 Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); //此处获得服务器端的数据 string returnData = Encoding.UTF8.GetString(receiveBytes); //Encoding.ASCII.GetString(receiveBytes); 此处若用ASCII,不能正确处理中文 Console.WriteLine("This is the message come from server: " + returnData.ToString()); udpClient.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } } |
相关推荐
C# SocketClient 基础版
Socket Client
Socket监听与TcpListener监听的区别和用法
socket是针对应用层和传输层之间封装的接口 Tcplistener是对socket tcp协议封装的接口,更便于开发 1.利用Tcp协议编程 1)服务器端: a)建立TCP监听器TcpListener对象。 TcpListenertl=newTcpListener(端口号); b)启动监听器 tl.Start(); c)用监听器获取连接进来的套接字(Socket) ...
DELPHI2010 tcpip通信
实现delphi2010 socket通信,下载运行即可。
C#之网络
从远程服务器上获取数据 把本地数据上传到服务器上在网络环境中,我们最感兴趣的两个名称空间是System.Net和System.Net.Sockets。System.Net名称空间通常与较高层的操作有关,例如下载和上传文件,使用HTTP和其他协议进行Web请求等;而System.Net.Sockets名称空间包含的类通常与较低层的操作有关。如果要直接使用套接字或TCP/IP之类的协议,这个名称空间中的类就非常有用。
OmniQuant:全方位校准实现大语言模型高效量化与移动端部署
模型量化是一种通过降低模型权重和激活值的数值精度来压缩模型大小、减少内存占用和计算开销的核心技术。其原理在于将高精度浮点数映射到低精度整数表示,从而在保持模型性能的同时,显著提升存储和计算效率。这项技术的价值在于,它使得大规模语言模型能够在消费级硬件和资源受限的移动设备上运行,极大地拓宽了AI应用场景。OmniQuant作为一项前沿的量化技术,通过引入可学习权重裁剪和可学习等价变换机制,实现了对权重分布不均匀和激活值异常值问题的协同优化,从而在极低的比特数下仍能保持优异的模型性能。本文深入探讨了OmniQu
Acute逻辑分析仪TL4134E实战:从触发电平到协议解析的完整避坑指南
本文是一份针对Acute逻辑分析仪TL4134E的实战避坑指南。文章深入解析了触发电平分组、采样率与存储深度权衡、高级触发等核心概念,并提供了混合电压系统测量、eMMC调试内存优化、SPI/I2C/UART协议解析排错等具体配置技巧,帮助硬件工程师和嵌入式开发者高效捕获与分析数字信号,快速定位通信问题。
TcpListener/TcpClient/UdpClient 的区别及联系
应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节。(也就是说TCPClient、TCPListener 和 UDPClient 类是用来简化Socket) TcpClient
AHB不对称半桥反激电路设计(一)变换器拓扑工作原理详解
本文详细分析了AHB(不对称半桥)反激变换器拓扑的工作原理及关键优势。该拓扑通过谐振腔结构实现原边功率管的零电压开通(ZVS)和副边整流管的零电流关断(ZCS),显著提升效率至95%以上。文章阐述了6个工作阶段的时序特征,包括谐振电感电流和电容电压的数学模型推导。AHB拓扑具有漏感能量回收、宽电压输出(适配PD快充等场景)和协同储能等优势,相比传统方案可缩小变压器体积30%,成为100-300W隔离电源的理想选择。
Socket与TcpListener、TcpClient、UdpClient 的区别及联系
socket与TcpListener、TcpClient、UdpClient 的区别及联系 摘要:应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务...... 应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TC...
一种解决STM32多串口同时收发的方法
在做项目中,遇到了同时调用串口通信时程序崩溃的问题,在项目中,串口1用作调试串口,串口2用作MQTT通信串口,串口3用作下位机通信串口, 串口1重定向以后,用库函数自带的printf函数打印字符串 串口2使用自己写的u2_printf函数,即va_list这套变参宏定义后使用vsprintf函数打印字符串 串口3刚开始使用串口2一样的打印方式,程序在调试调用到串口3打印函数时直接崩溃,后续将串口3改用dma转存输出,仍然无法正常调用 多次研究以后,采用三个串口都使用重定向后的库函数自带的printf
【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例
【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例
C# Socket与TcpListener、TcpClient和UdpClient的区别及联系
应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上,负责数据传送的细节。(也就是说TCPClient、TCPListener 和 UDPClient 类是用来简化Socket) TcpClient
2024年数字IC秋招-华为机试-数字芯片-实习笔试题
笔试题目:40个选择题A.综合时不同文件列表内的宏定义仅在本列表生效B.宏定义会覆盖,不需要单独undefC.仿真时出现宏定义冲突以最后一次值为准D.宏定义最好在各文件中随用随定义A.4/9B.4/6C.01D.0/6。
C# TcpListener、TcpClient 与 UdpClient 通讯学习笔记
TcpListener、TcpClient和 UdpClient 是 .NET 对底层 Socket 的常用封装,分别用于解决 TCP 服务端监听、TCP 客户端连接以及 UDP 数据报收发问题,核心特性是使用简单、职责清晰、适合快速实现网络通讯程序。
毕设-MobileNetV4:给YOLOv8装上轻量化“引擎”——通用瓶颈与C2f融合的实战教程
本文介绍了一种将MobileNetV4与YOLOv8结合的目标检测模型轻量化方案。MobileNetV4通过通用瓶颈(UB)结构实现多任务适配,其核心改进包括动态卷积核、注意力机制和多路径特征聚合,显著提升特征提取能力。作者详细阐述了如何在YOLOv8框架中实现MobileNetV4的通用瓶颈模块,包括"膨胀-卷积-注意力-压缩"的流程设计,并构建完整的backbone网络。该方案通过融合MobileNetV4的轻量化优势与YOLOv8的高效检测架构,在移动设备上实现了精度与速度的良好平
关闭搜狗输入法右下角广告的解决方案
本文主要介绍了关闭搜狗输入法右下角广告的解决方案,希望能对使用搜狗输入法的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案
TCPClient 类实现网络互联、通信
TcpClient 为 TCP 网络服务提供客户端连接。 System.Object System.Net.Sockets.TcpClient [C#] public class TcpClient : IDisposable 备注 TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。 为使 TcpClient ...
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
【C#学习10】socket、Unity简易聊天室
目录
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
2890



被折叠的 条评论
为什么被折叠?



