引言C作为一种强大的编程语言,广泛应用于Windows平台的开发。在网络编程领域,C同样表现出色,提供了丰富的类库和API,使得开发者能够轻松实现各种网络应用。本文将带领读者从C网络编程的基础知识开始...
C#作为一种强大的编程语言,广泛应用于Windows平台的开发。在网络编程领域,C#同样表现出色,提供了丰富的类库和API,使得开发者能够轻松实现各种网络应用。本文将带领读者从C#网络编程的基础知识开始,逐步深入,最终达到实战应用的水平。
网络编程是指利用计算机网络的通信协议,实现计算机之间的数据交换和资源共享。C#网络编程主要基于.NET Framework和.NET Core中的System.Net和System.Net.Sockets命名空间。
以下是一个简单的TCP客户端示例:
using System;
using System.Net.Sockets;
class Program
{ static void Main() { string serverIp = "127.0.0.1"; int serverPort = 12345; TcpClient client = new TcpClient(serverIp, serverPort); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string message = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("Received message: " + message); stream.Close(); client.Close(); }
}以下是一个简单的TCP服务器示例:
using System;
using System.Net;
using System.Net.Sockets;
class Program
{ static void Main() { int port = 12345; TcpListener listener = new TcpListener(IPAddress.Any, port); listener.Start(); Console.WriteLine("Server started on port " + port); while (true) { TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string message = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("Received message: " + message); byte[] response = System.Text.Encoding.UTF8.GetBytes("Hello, client!"); stream.Write(response, 0, response.Length); stream.Close(); client.Close(); } }
}C#提供了异步编程模型(Async/Await),使得网络编程更加高效。以下是一个异步TCP客户端示例:
using System;
using System.Net.Sockets;
using System.Threading.Tasks;
class Program
{ static async Task Main() { string serverIp = "127.0.0.1"; int serverPort = 12345; using (TcpClient client = new TcpClient(serverIp, serverPort)) { using (NetworkStream stream = client.GetStream()) { byte[] buffer = new byte[1024]; int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length); string message = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("Received message: " + message); } } }
}C#提供了System.Net.Http命名空间,支持HTTPS编程。以下是一个HTTPS客户端示例:
using System;
using System.Net.Http;
class Program
{ static async Task Main() { using (HttpClient client = new HttpClient()) { string response = await client.GetStringAsync("https://www.example.com"); Console.WriteLine(response); } }
}以下是一个简单的文件传输客户端示例:
using System;
using System.Net.Sockets;
using System.IO;
class Program
{ static void Main() { string serverIp = "127.0.0.1"; int serverPort = 12345; string filePath = @"C:\example.txt"; using (TcpClient client = new TcpClient(serverIp, serverPort)) { using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0) { client.GetStream().Write(buffer, 0, bytesRead); } } } }
}以下是一个简单的HTTP服务器示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class Program
{ static void Main() { int port = 8080; TcpListener listener = new TcpListener(IPAddress.Any, port); listener.Start(); Console.WriteLine("HTTP Server started on port " + port); while (true) { TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string request = Encoding.UTF8.GetString(buffer, 0, bytesRead); string response = "Hello, World!
"; byte[] data = Encoding.UTF8.GetBytes(response); stream.Write(data, 0, data.Length); stream.Close(); client.Close(); } }
}C#网络编程是一门博大精深的学问,需要不断学习和实践。通过本文的介绍,相信读者已经对C#网络编程有了初步的了解。希望本文能够帮助读者在C#网络编程的道路上越走越远。