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读取和写入数据。

