首页 » SEO优化 » phpsocket自动提议技巧_53 C的收集编程和Socket通信

phpsocket自动提议技巧_53 C的收集编程和Socket通信

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

在C#中,Socket类位于System.Net.Sockets命名空间中,它封装了操作系统供应的底层Socket接口,并供应了一些高等的方法和属性,使得我们可以方便地创建和利用Socket工具。
Socket类有以下几个主要的属性:

AddressFamily:表示Socket利用的地址族,如InterNetwork(IPv4)、InterNetworkV6(IPv6)等。
SocketType:表示Socket利用的类型,如Stream(TCP)、Dgram(UDP)等。
ProtocolType:表示Socket利用的协议,如Tcp、Udp等。
LocalEndPoint:表示Socket绑定确当地端点,即IP地址和端口号。
RemoteEndPoint:表示Socket连接的远程端点,即IP地址和端口号。
Socket类有以下几个主要的方法:Bind:将Socket绑定到一个本地端点上,这样它就可以监听来自该端点的网络要求。
Listen:让Socket进入监听状态,等待来自远程端点的连接要求。
Accept:接管一个来自远程端点的连接要求,并返回一个新的Socket工具,用于与该远程端点进行通信。
Connect:让Socket主动发起一个连接要求,考试测验与指定的远程端点建立连接。
Send:向远程端点发送数据。
Receive:从远程端点吸收数据。
Close:关闭Socket,并开释所有干系资源。
如何利用Socket进行TCP通信?

TCP通信须要有一个做事器端和一个客户端。
做事器端卖力监听来自客户真个连接要求,并为每个连接要求创建一个新的Socket工具,用于与客户端进行数据交流。
客户端卖力发起连接要求,并利用一个Socket工具与做事器进行数据交流。
下面给出一个大略的示例,演示如何利用Socket进行TCP通信。

phpsocket自动提议技巧_53 C的收集编程和Socket通信

做事器端代码:

phpsocket自动提议技巧_53 C的收集编程和Socket通信
(图片来自网络侵删)

using System;using System.Net;using System.Net.Sockets;using System.Text;namespace TcpServer{ class Program { static void Main(string[] args) { // 创建一个TCP Socket工具 Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 绑定到本地IP地址和端口号 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 8888; IPEndPoint endPoint = new IPEndPoint(ip, port); server.Bind(endPoint); // 开始监听 server.Listen(10); Console.WriteLine("做事器已启动,等待客户端连接..."); // 循环接管客户端连接要求 while (true) { // 接管一个客户端连接要求,并返回一个新的Socket工具 Socket client = server.Accept(); Console.WriteLine("客户端已连接,IP地址和端口号为:{0}", client.RemoteEndPoint); // 创建一个字节数组,用于吸收和发送数据 byte[] buffer = new byte[1024]; // 吸收客户端发送的数据 int length = client.Receive(buffer); string message = Encoding.UTF8.GetString(buffer, 0, length); Console.WriteLine("吸收到客户真个数据:{0}", message); // 向客户端发送数据 message = "你好,我是做事器。
"; buffer = Encoding.UTF8.GetBytes(message); client.Send(buffer); Console.WriteLine("向客户端发送数据:{0}", message); // 关闭客户端Socket client.Close(); } // 关闭做事器Socket server.Close(); }}

客户端代码:

using System;using System.Net;using System.Net.Sockets;using System.Text;namespace TcpClient{ class Program { static void Main(string[] args) { // 创建一个TCP Socket工具 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 连接到做事器 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 8888; IPEndPoint endPoint = new IPEndPoint(ip, port); client.Connect(endPoint); Console.WriteLine("已连接到做事器,IP地址和端口号为:{0}", client.RemoteEndPoint); // 创建一个字节数组,用于吸收和发送数据 byte[] buffer = new byte[1024]; // 向做事器发送数据 string message = "你好,我是客户端。
"; buffer = Encoding.UTF8.GetBytes(message); client.Send(buffer); Console.WriteLine("向做事器发送数据:{0}", message); // 吸收做事器发送的数据 int length = client.Receive(buffer); message = Encoding.UTF8.GetString(buffer, 0, length); Console.WriteLine("吸收到做事器的数据:{0}", message); // 关闭客户端Socket client.Close(); } }}

运行结果:

从上面的示例可以看出,利用Socket进行TCP通信的基本步骤如下:

做事器端创建一个TCP Socket工具,并绑定到一个本地端点上。
做事器端调用Listen方法,开始监听来自客户真个连接要求。
做事器端调用Accept方法,接管一个来自客户真个连接要求,并返回一个新的Socket工具,用于与该客户端进行通信。
客户端创建一个TCP Socket工具,并调用Connect方法,考试测验与指定的做事器端点建立连接。
做事器端和客户端分别利用自己的Socket工具,调用Send和Receive方法,进行数据交流。
做事器端和客户端在通信结束后,调用Close方法,关闭自己的Socket工具。
如何利用Socket进行UDP通信?

UDP通信不须要建立连接,只须要知道对方的IP地址和端口号即可。
UDP通信有一个发送方和一个吸收方。
发送方卖力向指定的远程端点发送数据。
吸收方卖力监听来自任意远程端点的数据。
下面给出一个大略的示例,演示如何利用Socket进行UDP通信。

发送方代码:

using System;using System.Net;using System.Net.Sockets;using System.Text;namespace UdpSender{ class Program { static void Main(string[] args) { // 创建一个UDP Socket工具 Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // 创建一个远程端点,表示吸收方的IP地址和端口号 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 9999; IPEndPoint endPoint = new IPEndPoint(ip, port); // 创建一个字节数组,用于发送数据 byte[] buffer = new byte[1024]; // 向远程端点发送数据 string message = "你好,我是发送方。
"; buffer = Encoding.UTF8.GetBytes(message); sender.SendTo(buffer, endPoint); Console.WriteLine("向远程端点发送数据:{0}", message); // 关闭发送方Socket sender.Close(); } }}

吸收方代码:

using System;using System.Net;using System.Net.Sockets;using System.Text;namespace UdpReceiver{ class Program { static void Main(string[] args) { // 创建一个UDP Socket工具 Socket receiver = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // 绑定到本地IP地址和端口号 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 9999; IPEndPoint endPoint = new IPEndPoint(ip, port); receiver.Bind(endPoint); // 创建一个字节数组,用于吸收数据 byte[] buffer = new byte[1024]; // 吸收来自任意远程端点的数据,并返回发送方的端点信息 EndPoint senderEndPoint = new IPEndPoint(IPAddress.Any, 0); int length = receiver.ReceiveFrom(buffer, ref senderEndPoint); string message = Encoding.UTF8.GetString(buffer, 0, length); Console.WriteLine("吸收到来自{0}的数据:{1}", senderEndPoint, message); // 关闭吸收方Socket receiver.Close(); } }}

运行结果:

吸收到来自127.0.0.1:8888的数据:你好,我是发送方。
向远程端点发送数据:你好,我是吸收方。

从上面的示例可以看出,利用Socket进行UDP通信的基本步骤如下:

发送方创建一个UDP Socket工具,并指定一个远程端点,表示吸收方的IP地址和端口号。
发送方调用SendTo方法,向指定的远程端点发送数据。
吸收方创建一个UDP Socket工具,并绑定到一个本地端点上。
吸收方调用ReceiveFrom方法,吸收来自任意远程端点的数据,并返回发送方的端点信息。
发送方和吸收方在通信结束后,调用Close方法,关闭自己的Socket工具。

总结 本文先容了C#中最基本和最常用的网络编程技能——Socket通信。
我们理解了什么是Socket,以及如何利用Socket进行TCP和UDP通信。
我们还给出了一些大略的示例代码,演示了如何利用Socket类创建和利用Socket工具。
通过学习本文,我们可以节制C#中网络编程的根本知识,为进一步学习更高等的网络编程技能打下坚实的根本。

希望本文对你有所帮助。
如果你有任何问题或建议,请在评论区留言。
感激!

标签:

相关文章