C#网络(Socket和NetworkStream)
发布人:shili8
发布时间:2024-08-08 16:39
阅读次数:0
**C#网络编程**
在本文中,我们将讨论如何使用C#进行网络编程,包括Socket和NetworkStream的使用。
### Socket概述Socket是进程间通信的一种机制,它允许两个进程通过网络进行数据交换。Socket可以分为两类:TCP Socket(面向连接)和UDP Socket(无连接)。
#### TCP SocketTCP Socket是一种面向连接的Socket,它保证了数据的可靠传输。每次发送数据前,客户端和服务器都需要建立一个连接,这样就能保证数据的准确性。
#### UDP SocketUDP Socket是一种无连接的Socket,它不保证数据的可靠传输,每次发送数据时,不需要建立连接。
### NetworkStream概述NetworkStream是.NET Framework提供的一个类,它代表了一个网络流,可以用于读取和写入网络数据。它可以与Socket一起使用,来实现网络通信。
### Socket示例代码以下是一个简单的TCP Socket客户端和服务器的示例代码:
csharpusing System; using System.Net.Sockets; using System.Text; class TcpClient{ static void Main(string[] args) { // 创建一个Socket对象 TcpClient client = new TcpClient(); try { // 连接到服务器 client.Connect("127.0.0.1",8080); // 获取网络流 NetworkStream stream = client.GetStream(); // 发送数据 byte[] data = Encoding.UTF8.GetBytes("Hello, Server!"); stream.Write(data,0, data.Length); // 接收数据 byte[] receiveData = new byte[1024]; int bytesRead = stream.Read(receiveData,0, receiveData.Length); string receivedMessage = Encoding.UTF8.GetString(receiveData,0, bytesRead); Console.WriteLine("Received message: " + receivedMessage); // 关闭连接 client.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } class TcpServer{ static void Main(string[] args) { // 创建一个Socket对象 TcpListener listener = new TcpListener(IPAddress.Any,8080); try { // 开始监听 listener.Start(); while (true) { // 等待连接 TcpClient client = listener.AcceptTcpClient(); // 获取网络流 NetworkStream stream = client.GetStream(); // 接收数据 byte[] receiveData = new byte[1024]; int bytesRead = stream.Read(receiveData,0, receiveData.Length); string receivedMessage = Encoding.UTF8.GetString(receiveData,0, bytesRead); Console.WriteLine("Received message: " + receivedMessage); // 发送数据 byte[] data = Encoding.UTF8.GetBytes("Hello, Client!"); stream.Write(data,0, data.Length); // 关闭连接 client.Close(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
### NetworkStream示例代码以下是一个简单的NetworkStream读取和写入数据的示例代码:
csharpusing System; using System.Net.Sockets; using System.Text; class NetworkStreamExample{ static void Main(string[] args) { // 创建一个Socket对象 TcpClient client = new TcpClient(); try { // 连接到服务器 client.Connect("127.0.0.1",8080); // 获取网络流 NetworkStream stream = client.GetStream(); // 写入数据 byte[] data = Encoding.UTF8.GetBytes("Hello, Server!"); stream.Write(data,0, data.Length); //读取数据 byte[] receiveData = new byte[1024]; int bytesRead = stream.Read(receiveData,0, receiveData.Length); string receivedMessage = Encoding.UTF8.GetString(receiveData,0, bytesRead); Console.WriteLine("Received message: " + receivedMessage); // 关闭连接 client.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
### 总结在本文中,我们讨论了C#网络编程的基本概念,包括Socket和NetworkStream的使用。我们通过示例代码展示了如何使用TCP Socket进行客户端和服务器通信,以及如何使用NetworkStream读取和写入数据。