henu 2024年C#网络应用编程期末知识点整理

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
一、多线程编程

多线程编程允许程序并行执行多个任务,提升性能和响应速度。

  1. 基本概念

    • 线程(Thread):操作系统可以独立调度和执行的最小单位。
    • 进程(Process):运行中的程序实例,包含多个线程。
  2. 线程管理

    • 创建线程
     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();
    
  3. 线程同步

    • 锁(lock)
     lock (lockObject)
     {
        // Critical section
     }
    
  4. 进程

    • Prcess类
     Process myProcess = new Process();
     myProcess.Start();
    
二、TCP编程

TCP(传输控制协议)是一种面向连接的、可靠的传输协议。

  1. TCP服务器

    TcpListener listener = new TcpListener(IPAddress.Any, 8000);
    listener.Start();
    while (true)
    {
       TcpClient client = listener.AcceptTcpClient();
       // Handle client in separate thread or task
    }
    
  2. TCP客户端

    TcpClient client = new TcpClient("hostname", 8000);
    NetworkStream stream = client.GetStream();
    byte[] data = Encoding.ASCII.GetBytes("Hello, World!");
    stream.Write(data, 0, data.Length);
    
  3. 数据传输

  • 读写数据

     // 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(用户数据报协议)是一种无连接的、不可靠的传输协议。

  1. 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应用程序和服务的框架。

  1. 基本概念

    • Web Forms:基于事件驱动的Web编程模型。
    • MVC(Model-View-Controller):一种分离关注点的架构模式。
    • Web API:用于创建HTTP服务的框架。
  2. ASP.NET Core

    • 项目结构

      - Controllers
      - Models
      - Views
      - wwwroot
      - appsettings.json
      - Startup.cs
      
  3. 创建简单的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; }
     }
    
  4. 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 }
             };
         }
     }
    
  5. 中间件(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();
             });
         }
     }
    
  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值