C#网络编程
henu 2024年C#网络应用编程期末知识点整理
本文档是为了C#期末考试速查知识点和知识框架梳理而设计
知识框架梳理
以下是C#网络编程的知识框架,包括多线程、TCP、UDP和ASP.NET。
C# 网络编程知识框架和程序模板
IP地址与域名
//IPAddress类
IPAddress ip=IPAddress.Parse("ip地址字符串");
//IPEndPoint类,表示一个指定主机的一个端口
IPEndPoint ipEndPoint=new IPEndPoint(IP地址, 端口号)
//IPHostEntry类 用的少,在P132
//DNS类 重要方法:获取IP,主机名,IPHostEntry。在P132
数据流
//Encoding类:编码和解码 重要方法:P143
//FileStream类:文件读写 P146 两种新建方法,读和写函数
FileStream fs=new FileStream(路径,操作方式,访问权限);
FileStream fs2=File.OpenRead(路径);
fs.read();
fs.write();
//MemoryStream类:内存读写 P147
//NetWorkStream类: 网络数据读写 P148
//字符流:StreamReader和StreamWriter类 P149
//序列化:通过网络传输类。可序列化声明 P149
一、多线程编程
多线程编程允许程序并行执行多个任务,提升性能和响应速度。
-
基本概念
- 线程(Thread):操作系统可以独立调度和执行的最小单位。
- 进程(Process):运行中的程序实例,包含多个线程。
-
线程管理
- 创建线程
Thread thread = new Thread(new ThreadStart(ThreadMethod)); thread.Start(); thread.Sleep();
- 线程池(ThreadPool)
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod));
- 任务(Task)和异步编程(Async/Await)
Task task = Task.Run(() => DoWork()); await DoWorkAsync();
-
线程同步
- 锁(lock)
lock (lockObject) { // Critical section }
-
进程
- Prcess类
Process myProcess = new Process(); myProcess.Start();
二、TCP编程
TCP(传输控制协议)是一种面向连接的、可靠的传输协议。
-
TCP服务器
TcpListener listener = new TcpListener(IPAddress.Any, 8000); listener.Start(); while (true) { TcpClient client = listener.AcceptTcpClient(); // Handle client in separate thread or task }
-
TCP客户端
TcpClient client = new TcpClient("hostname", 8000); NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetBytes("Hello, World!"); stream.Write(data, 0, data.Length);
-
数据传输
-
读写数据
// Writing data byte[] data = Encoding.ASCII.GetBytes("Hello, World!"); stream.Write(data, 0, data.Length); // Reading data byte[] buffer = new byte[256]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string responseData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
三、UDP编程
UDP(用户数据报协议)是一种无连接的、不可靠的传输协议。
-
UDP服务器
UdpClient udpServer = new UdpClient(8000); while (true) { IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0); byte[] data = udpServer.Receive(ref remoteEP); // Handle data }
2.UDP客户端
UdpClient udpClient = new UdpClient();
byte[] data = Encoding.ASCII.GetBytes("Hello, World!");
udpClient.Send(data, data.Length, "hostname", 8000);
四、ASP.NET编程
ASP.NET是用于创建动态Web应用程序和服务的框架。
-
基本概念
- Web Forms:基于事件驱动的Web编程模型。
- MVC(Model-View-Controller):一种分离关注点的架构模式。
- Web API:用于创建HTTP服务的框架。
-
ASP.NET Core
-
项目结构
- Controllers - Models - Views - wwwroot - appsettings.json - Startup.cs
-
-
创建简单的MVC应用
- Controller
public class HomeController : Controller { public IActionResult Index() { return View(); } }
- View
<!-- Views/Home/Index.cshtml --> <html> <head> <title>Home Page</title> </head> <body> <h1>Hello, World!</h1> </body> </html>
- Model
public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }
-
ASP.NET Web API
- Controller
[Route("api/[controller]")] [ApiController] public class ProductsController : ControllerBase { [HttpGet] public IEnumerable<Product> Get() { return new List<Product> { new Product { Id = 1, Name = "Product1", Price = 9.99m }, new Product { Id = 2, Name = "Product2", Price = 19.99m } }; } }
-
中间件(Middleware)
- 创建和使用中间件
public class RequestLoggingMiddleware { private readonly RequestDelegate _next; public RequestLoggingMiddleware(RequestDelegate next) { _next = next; } public async Task InvokeAsync(HttpContext context) { Console.WriteLine($"Request: {context.Request.Method} {context.Request.Path}"); await _next(context); } } public class Startup { public void Configure(IApplicationBuilder app) { app.UseMiddleware<RequestLoggingMiddleware>(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } }