编辑
2025-09-27
C#
00

摘要

在本文中,我们将学习如何使用C#编写一个基本的TCP/IP客户端,以便在计算机之间进行通信。Socket是C#中用于网络通信的基本类之一,它允许应用程序在本地计算机和远程计算机之间进行通信。在本文中,我们将使用Socket类来创建一个TCP/IP客户端应用程序,以便可以从本地计算机向远程计算机发送数据。

正文

TCP/IP,即传输控制协议/网际协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,同时也是一种应用广泛的网络协议。

TCP/IP协议包含了两个主要的协议:传输控制协议(TCP)和网际协议(IP)。

  • TCP(Transmission Control Protocol):传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。它负责在数据发送和接收设备之间建立连接,确保数据的有序传输,并检查数据在传输过程中是否出错。
  • IP(Internet Protocol):网际协议是用于发送和接收数据包的协议。每个使用TCP/IP的设备都有一个独一无二的IP地址,这使得数据能够被正确地发送到目标设备。

TCP/IP协议是互联网的基础,所有的互联网数据通信都是基于TCP/IP协议进行的。

image.png

编辑
2025-09-27
C#
00

摘要

Socket是一种通信机制,它允许在同一台主机或者不同主机之间进行通信。在C#中,Socket是System.Net.Sockets命名空间下的一个类,它提供了一系列方法和属性用于网络通信。

套接字(Socket)是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。套接字为应用层进程提供了利用网络协议交换数据的机制。套接字连接应用进程和网络协议栈,是应用程序通过网络协议进行通信的接口。套接字是应用程序与网络协议栈进行交互的接口。

正文

通信七层

也被称为OSI(Open Systems Interconnection)模型,是一个用于描述和理解复杂的网络系统的框架。以下是OSI模型的七个层次,以及每个层次的具体作用:

  1. 物理层:负责管理电脑硬件和网络之间的物理连接,如电缆、光纤、网卡等。
  2. 数据链路层:负责在物理地址(如MAC地址)之间传输数据。它还负责错误检测和纠正。
  3. 网络层:负责管理数据包在网络中的路由和转发。它使用IP地址来识别设备。
  4. 传输层:负责端到端的通信。它可以确保数据的完整性。主要的协议是TCP和UDP。
  5. 会话层:负责在设备之间建立、管理和终止会话。它允许不同的应用程序在同一时间进行多个会话。
  6. 表示层:负责数据的表示、安全和压缩。它将数据转换为能够被应用层理解的格式,并进行加密和解密、压缩和解压缩。
  7. 应用层:负责处理特定的应用程序细节。各种程序在这一层上进行通信,如HTTP、FTP、SMTP等。
编辑
2025-09-27
C#
00

在 .NET 开发中,依赖注入(DI)是一种常用的设计模式,它有助于减少代码之间的耦合,使得代码更加模块化和易于测试。虽然在 ASP.NET Core 中内置了强大的依赖注入支持,但在 Windows Forms(WinForms)应用程序中实现 DI 可能会比较复杂。本文将介绍如何在 WinForms 应用中使用 Scrutor 来简化服务注册过程,并提供一些实用的示例。

Scrutor 简介

Scrutor 是一个扩展库,它扩展了 .NET Core 的 IServiceCollection,提供了更多灵活的方式来注册服务,尤其是通过扫描程序集来自动注册服务非常实用。这在大型项目中尤其有用,可以避免手动注册每个服务。

设置 WinForms 项目

首先,确保你有一个 WinForms 项目。在 Visual Studio 中创建一个新的 WinForms .NET Core 项目。

添加必要的 NuGet 包

在项目中,我们需要添加以下 NuGet 包:

  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.Hosting
  • Scrutor
编辑
2025-09-27
C#
00

摘要

在C#中,Channel类是.NET Core提供的一种新的生产者消费者模型。Channel类位于System.Threading.Channels命名空间下,它提供了一种异步的消息传递机制,可以用来在生产者和消费者之间传递数据。

正文

Channel类的应用场景

Channel类主要用于以下场景:

  • 异步数据流处理:当我们需要在生产者和消费者之间进行异步数据传递时,可以使用Channel类。
  • 多线程编程:Channel类提供了一种线程安全的方式来传递数据,可以避免在多线程环境中出现的数据竞争问题。
  • 实时数据处理:当我们需要处理实时数据流时,可以使用Channel类来异步地处理数据。

一个简单例子

image.png

编辑
2025-09-27
C#
00

摘要

C# 9.0引入的一个新特性就是record类型。在这篇文章中,我们将探讨record类型,它的用途,优点,缺点,以及一些例子。

正文

什么是Record类型?

record类型是一种引用类型,提供了内置功能来封装数据。与类和结构不同,record类型默认是不可变的,这意味着一旦创建了record实例,它就不能被修改。

image.png