c#软件开发学习笔记--网络通讯、TCP、Socket

C#和网络通讯:TcpClient、TcpListener和Socket的使用比较 然而,需要注意的是,尽管TcpClient和TcpListener提供了更简化的接口,但在某些情况下,仍然可能需要直接使用Socket类来满足特定的需求。而TcpClient类则是专门用于创建TCP客户端连接的,它封装了Socket类的一部分功能,并提供了更高层次的方法来处理连接、发送和接收数据。而TcpListener类则是用于创建TCP服务器监听的,它封装了Socket类的一部分功能,并提供了更高层次的方法来处理客户端连接请求和接收数据。在C#编程语言中,网络通讯是非常常见的需求。 阅读详情

网络通讯 / Socket / TCP 学习总结

1. 网络协议体系结构

1.1 OSI 七层模型

OSI(Open System Interconnect) 即开放式系统互联,由 ISO(国际标准化组织)于 1985 年研究提出,定义了网络互连的七层框架。

层级名称主要功能常见协议
7应用层为用户提供应用接口与网络服务HTTP、HTTPS、FTP、SMTP、DNS、Telnet
6表示层数据格式转换、加密压缩ASCII、UTF-8、Unicode、SSL/TLS、JPEG、DES
5会话层建立、管理、终止通信会话ADSP、RPC、SQL
4传输层端到端可靠数据传输,差错/流量控制TCP、UDP、SPX
3网络层IP 寻址、路由选择IP、ICMP、ARP、RARP、IGMP
2数据链路层成帧、MAC 地址访问、差错检测HDLC、PPP、VLAN、Wi-Fi(802.11)
1物理层比特流与电信号/光信号互换UART、RS-232/485、RJ-45、V.35

数据传输流程(以服务器向客户端发送数据为例):

  • 发送端:应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层
  • 物理层通过物理介质以比特流方式传送到对端物理层
  • 接收端:物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层

1.2 TCP/IP 五层模型

TCP/IP 协议参考 OSI 体系结构,将其简化为五层。相比七层模型,结构更简单、效率更高、成本更低,在实际应用中更为普及。

2. TCP 协议详解

2.1 基本概念

TCP(Transmission Control Protocol)传输控制协议,是 OSI 七层框架中传输层的协议,是 TCP/IP 协议簇中的重要协议。

TCP 是一种:

  • 面向连接的
  • 可靠的
  • 基于字节流的
  • 传输层通信协议

2.2 TCP 特点

特性说明
有序保证数据按顺序到达
安全通过连接机制保障通信安全
可靠通过确认、重传机制保证送达
不易丢包流量控制 + 拥塞控制
延时性高建立连接与确认带来额外延迟

主要应用场景:聊天室、数据传输等需要可靠通信的场景。

2.3 TCP 连接的三个阶段

  1. 建立连接:三次握手
  2. 数据传输:全双工通信
  3. 释放连接:四次挥手

2.4 三次握手(建立连接)

目的:在客户端与服务器之间建立一个可信的连接通道。

步骤方向报文内容状态变化
第一次握手客户端 → 服务器SYN=1, seq=100(请求建立连接)客户端进入 SYN_SENT
第二次握手服务器 → 客户端SYN=1, ACK=1, seq=300, ack=101(确认请求并回应)服务器进入 SYN_RECV
第三次握手客户端 → 服务器ACK=1, seq=101, ack=301(确认收到响应)双方进入 ESTABLISHED

通俗理解:客户端发两次、服务器响应一次,双方共发送三次报文以建立信任。

延伸问题:为什么必须是三次握手?两次不行吗?

因为需要考虑连接丢包问题。若没有第三次握手,客户端一直未收到服务器响应时,服务器却已建立连接,会造成资源浪费与状态不一致。

2.5 四次挥手(释放连接)

目的:关闭一个已建立的 TCP 连接。

步骤方向报文内容含义
第一次挥手客户端 → 服务器FIN 报文客户端数据发送完毕,请求释放连接
第二次挥手服务器 → 客户端ACK 确认报文服务器确认收到客户端的 FIN
第三次挥手服务器 → 客户端FIN 报文服务器数据发送完毕,请求释放连接
第四次挥手客户端 → 服务器ACK 确认报文客户端确认收到服务器的 FIN

2.6 报文标识位含义

  • SYN:标识客户端意图。SYN=1 表示请求连接;SYN=2 表示请求数据;SYN=3 表示释放连接
  • ACK:标识服务器是否收到请求。ACK=1 且 ack=客户端 seq+1 表示已收到
  • FIN:发送端完成发送任务
  • RST:连接出现错误,必须释放连接并重建
  • PSH:接收方应尽快将数据交给应用层
  • URG:紧急数据,需尽快传送

2.7 TCP 报文头部结构

TCP 报文头部共 32 字节,其中 20 字节为固定首部。

字段长度说明
源端口2 字节与 IP 头源 IP 共同标识发送方
目的端口2 字节与 IP 头目的 IP 共同标识接收方
序号 (seq)4 字节本报文段第一个字节的序号(32 位无符号,到达 2^32-1 后从 0 开始)
确认序号 (ack)4 字节期望收到对方下一个报文段的第一个字节序号(ACK=1 时有效)
数据偏移4 比特表示首部长度,单位 4 字节,首部最大 60 字节
保留6 比特供以后使用,置 0
标志位6 比特URG / ACK / PSH / RST / SYN / FIN
窗口2 字节滑动窗口,用于流量控制,最大 65535 字节
检验和-覆盖整个 TCP 报文段(首部+数据),收发端必须计算验证

2.8 TCP 连接的组成

一个 TCP 连接由一个四元组构成:

{ 源IP, 源端口, 目的IP, 目的端口 }
  • 服务器身份:IP 地址 + 端口
  • 客户端身份:IP 地址 + 端口
  • 一个 IP + 一个端口 = 一个 socket 插口

3. UDP 协议详解

3.1 基本概念

UDP(User Datagram Protocol)用户数据报协议,是一种:

  • 无连接的
  • 不可靠的
  • 面向数据报的
  • 传输层通信协议

3.2 UDP 特点

  • 无需建立连接即可通信
  • 不使用拥塞控制
  • 不保证可靠交付,最大努力交付
  • 容易造成数据丢失,易读到脏数据
  • 适合小数据量、高突发性、高频率的网络通信

3.3 UDP 通讯过程(C#)

  1. 创建一端:使用 UdpClient,配合 IPEndPoint 类
  2. 发送数据:udpClient.Send()
  3. 启动另一端:使用 UdpClient
  4. 接收数据:Task.Run() + udpClient.Receive()

4. TCP 与 UDP 对比

对比维度TCPUDP
连接方式面向连接无连接
系统资源较多较少
程序结构较复杂较简单
传输模式流模式数据报模式
数据正确性保证可能丢包
数据顺序保证不保证
可靠性高低
适用场景大数据量、持续连接小数据量、高突发、高频率

5. Socket 套接字

5.1 什么是 Socket

Socket 即套接字,本质是一个"外壳",是对网络中不同主机上应用程序之间进行双向通信端点的抽象。

5.2 Socket 与 TCP/UDP 的关系

Socket 是套接字,本质是对 TCP 和 UDP 做一层封装,让开发者无需关注协议底层原理即可使用。

  • Socket 是应用层与 TCP/IP 协议簇通信的中间软件抽象层
  • 将传输层封装后,方便应用层调用
  • TCP 和 UDP 是协议,而 Socket 是一种技术框架

5.3 C# 中的 Socket 封装层次

应用层代码
   ↓
TcpListener / TcpClient / UdpClient  ← .NET Framework 推荐使用的封装类
   ↓
Socket 类                              ← 底层 Socket 实现,可同时支持 TCP/UDP
   ↓
TCP / UDP 协议

5.4 Socket 通信要点

  • 客户端:可发送也可接收,发送和接收都使用客户端实例
  • 服务器:可发送也可接收,但接收和发送并非服务器"自身"完成,而是通过 Accept() 获取连接的客户端实例,由该客户端实例代为收发

6. C# Socket 编程实践

6.1 基础服务端

服务端核心 5 步流程:

// 1. 创建服务器对象:指定 IPv4、流式传输、TCP 协议
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// 2. 绑定 IP 和端口
IPAddress address = IPAddress.Parse(ipStr);
IPEndPoint endPoint = new IPEndPoint(address, port);
server.Bind(endPoint);

// 3. 开启监听(参数为容纳客户端数量)
server.Listen(100);

// 4. 接收客户端连接请求(阻塞,返回客户端 Socket)
Socket client = server.Accept();

// 5. 接收客户端发来的数据
byte[] buffer = new byte[client.Available];
int length = client.Receive(buffer);

多客户端接收实现:使用 Task.Run + CancellationTokenSource 双层嵌套,外层循环接收新客户端连接,内层循环持续读取已连接客户端的数据。

/// <summary>
/// 接收多个客户端连接,并为每个客户端单独开线程读取数据
/// </summary>
public void AcceptDataMul()
{
    cts = new CancellationTokenSource();
    Task.Run(() =>
    {
        while (!cts.IsCancellationRequested)
        {
            // 外层:循环接收新客户端连接
            Socket client = server.Accept();
            if (client != null && client.Connected)
            {
                // 内层:为每个客户端开启独立线程读取数据
                cts2 = new CancellationTokenSource();
                Task.Run(() =>
                {
                    while (!cts2.IsCancellationRequested)
                    {
                        byte[] buffer = new byte[client.Available];
                        int length = client.Receive(buffer);
                        // 通过 Invoke 回到 UI 线程更新控件
                        Invoke(new Action(() =>
                        {
                            richTextBox1.AppendText(Encoding.UTF8.GetString(buffer));
                        }));
                    }
                }, cts2.Token);
            }
        }
    }, cts.Token);
}

6.2 基础客户端

客户端核心流程:

// 1. 创建客户端实例
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// 2. 创建终端(服务器的 IP 和端口)
IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("192.168.219.12"), 63323);

// 3. 异步连接服务器(避免阻塞 UI 线程)
await client.ConnectAsync(endpoint);

// 4. 发送数据
byte[] data = Encoding.UTF8.GetBytes(textBox1.Text);
client.Send(data);

// 5. 异常时优雅关闭
if (client.Connected) client.Shutdown(SocketShutdown.Both);
client.Close();
client.Dispose();

6.3 简易聊天室服务器

该项目在基础服务端之上扩展了多客户端管理与广播/私发能力,是综合应用案例。

核心设计:

  1. 客户端管理:使用字典 + 列表双重存储

    // 字典:键为客户端终端,值为客户端 Socket
    Dictionary<EndPoint, Socket> clients = new Dictionary<EndPoint, Socket>();
    // 列表:作为下拉框数据源
    List<Client> clients2 = new List<Client>();
    
  2. 启动/关闭服务器:

    /// <summary>
    /// 打开服务器:创建 Socket → 绑定 → 监听
    /// </summary>
    public void StartServer()
    {
        socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        socketServer.Bind(new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text)));
        socketServer.Listen(1000);
    }
    
    /// <summary>
    /// 关闭服务器:先向所有客户端发送 "n1" 断开信号,再断开连接
    /// </summary>
    public void CloseServer()
    {
        foreach (var item in clients2)
        {
            item.Socket.Send(Encoding.UTF8.GetBytes("n1")); // 自定义断开标识
            item.Socket.Disconnect(false);
        }
        cts1.Cancel();
        socketServer.Close();
    }
    
  3. 广播 vs 私发:

    if (checkBox1.Checked) // 广播:遍历所有客户端发送
    {
        foreach (var item in clients2)
        {
            item.Socket.Send(Encoding.UTF8.GetBytes("服务器说:" + textBox1.Text));
        }
    }
    else // 私发:从下拉框选中特定客户端
    {
        Socket s1 = (Socket)comboBox1.SelectedValue;
        if (s1 != null && s1.Connected)
        {
            s1.Send(Encoding.UTF8.GetBytes("服务器说:" + textBox1.Text));
        }
    }
    
  4. 自定义断开协议:服务器与客户端事先约定,发送 "n1" 字符串作为断开标识,比依赖默认 Socket 异常更可控。


7. 关键 API 速查表

7.1 核心类

类命名空间用途
SocketSystem.Net.Sockets底层套接字,支持 TCP/UDP
TcpListenerSystem.Net.SocketsTCP 服务器封装
TcpClientSystem.Net.SocketsTCP 客户端封装
UdpClientSystem.Net.SocketsUDP 通讯封装
IPEndPointSystem.Net终端对象(IP + 端口)
IPAddressSystem.NetIP 地址
DnsSystem.Net域名解析
CancellationTokenSourceSystem.Threading取消异步任务

7.2 Socket 关键方法

方法说明所属
new Socket(...)创建 Socket,需指定地址族/类型/协议服务端 & 客户端
Bind(IPEndPoint)绑定 IP 和端口服务端
Listen(int)开始监听,参数为等待队列最大长度服务端
Accept()阻塞等待客户端连接,返回客户端 Socket服务端
Receive(byte[])接收数据,返回字节数服务端 & 客户端
Send(byte[])发送数据,返回发送字节数服务端 & 客户端
Connect(IPEndPoint)同步连接服务器客户端
ConnectAsync(IPEndPoint)异步连接服务器(推荐)客户端
Shutdown(SocketShutdown.Both)禁用 Socket 的发送和接收通用
Close()关闭 Socket通用
Dispose()释放资源通用

7.3 AddressFamily / SocketType / ProtocolType 常用枚举

// 地址族
AddressFamily.InterNetwork      // IPv4
AddressFamily.InterNetworkV6    // IPv6

// Socket 类型
SocketType.Stream               // 流式传输(TCP 用)
SocketType.Dgram                // 数据报传输(UDP 用)

// 协议类型
ProtocolType.Tcp                // TCP 协议
ProtocolType.Udp                // UDP 协议

7.4 获取本机 IP

IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress item in host.AddressList)
{
    if (item.AddressFamily == AddressFamily.InterNetwork) // 筛选 IPv4
    {
        ipStr = item.ToString();
    }
}

8. 面试高频考点

Q1:三次握手为什么不是两次?

两次握手无法处理丢包问题。若客户端的请求丢失,服务器已建立连接会浪费资源;若服务器响应丢失,客户端无法确认连接是否建立。第三次握手让客户端确认服务器响应,建立双向信任通道。

Q2:三次握手与四次挥手的区别?

维度三次握手四次挥手
目的建立连接关闭连接
报文数3 个4 个
发起方客户端客户端
原因双方需要互相同步初始序列号TCP 全双工,两个方向需独立关闭

Q3:TCP 与 UDP 如何选择?

  • 需要可靠传输、文件传输、聊天室 → TCP
  • 实时性要求高、可容忍丢包、视频流/DNS/广播 → UDP

Q4:Socket 是协议吗?

不是。Socket 不是协议,而是对 TCP/UDP 协议的封装,是应用层与 TCP/IP 协议簇通信的中间软件抽象层,提供编程接口。

Q5:TCP 报文头部有哪些关键字段?

源端口、目的端口、序号(seq)、确认序号(ack)、数据偏移、标志位(URG/ACK/PSH/RST/SYN/FIN)、窗口、检验和。

Q6:什么是滑动窗口?

TCP 通过滑动窗口机制进行流量控制,窗口大小表示接收端可提供的缓冲区大小(最大 65535 字节),协调通信双方的工作节奏,防止快速发送方淹没慢速接收方。


学习要点总结

主题核心结论
协议体系OSI 七层 / TCP-IP 五层,TCP/UDP 都在传输层
TCP面向连接、可靠、字节流;三次握手建连 + 四次挥手释放
UDP无连接、不可靠、数据报;适合高频小数据
Socket不是协议,是 TCP/UDP 的封装层,提供编程接口
C# 实践服务端:Bind → Listen → Accept → Receive;客户端:Connect → Send
多客户端使用 Task.Run + CancellationTokenSource 双层嵌套
UI 更新子线程更新控件必须通过 Invoke 回到 UI 线程
C#网络通讯库:TCP、UDP与组播的综合支持 Socket编程是网络通信的基础,它允许应用程序在不同设备间进行数据传输。在C#中,Socket类是.NET Framework提供的一个类,用于实现网络通信的底层细节。Socket类可以创建不同类型的网络连接,包括TCP和UDP等协议的实现。Socket类的基本结构包含以下几个核心部分:- 连接管理:用于建立、管理以及终止与远程主机的连接。- 数据传输:包括数据的发送和接收。- 异步操作:提供异步发送和接收数据的功能,以提升程序的响应性和性能。 阅读详情

相关推荐

C# Socket网络通讯从原理到落地:TCP源码、粘包拆包与心跳检测实战

TCP/IP协议栈是网络通讯的基石,而Socket编程则是应用层与协议栈之间的桥梁。在C#上位机开发与设备数据采集中,经常需要基于TCP协议实现指令下发与数据回传,这就涉及连接管理、字节流处理与异常感知等核心问题。理解TCP的面向连接、可靠传输特性,掌握从Bind、Listen到Accept、Receive的完整生命周期,是编写稳定通讯层的前提。实际工程中,粘包、半包、断线无感等问题常让“代码没错就是不工作”,需要借助长度头拆包、心跳机制、超时重连等手段加以解决。本文以一套可直接运行的最小C# TCP源码为

weixin_29313547的博客 228

C#通讯之网络通讯 TCP UDP

简单概述要掌握的协议: IP(Internet Protocol)网络之间互连的协议,包括:IPv4/IPv6。寻址的协议。提醒:IP在网络层。 v version版本 TCP(Transfer Control Protocol)传输控制协议提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。可靠的全双工信道。

D1021_的博客 1813

C# Socket网络通讯实战:上位机TCP粘包拆包与异步收发源码解析

网络编程中,TCP/IP协议栈提供了可靠的数据传输通道,而Socket则是应用层与传输层之间的关键桥梁。理解TCP的字节流特性是解决消息边界的核心前提——粘包、半包问题本质上源于传输层不维护消息结构。通过设计合理的帧协议,如长度前缀加消息体,即可从字节流中精确还原完整消息。在工业上位机场景中,C# Socket通信广泛应用于设备数据采集与指令下发,要求开发者掌握同步与异步模型、心跳机制及异常处理。本文从TCP通信基础原理切入,结合完整可运行的C#源码,剖析基于async/await的收发模型、端口占用排查、

weixin_33979203的博客 328

C# 网络通讯中 Socket 类的关键参数和使用方法

本文详细介绍了C#中Socket类的核心用法,包含TCP/UDP协议实现要点。重点解析了Socket初始化参数(地址族、套接字类型、协议类型)、连接参数(IPEndPoint)和控制参数(超时时间、缓冲区)。详细说明了TCP服务器的绑定/监听/接收流程和客户端的连接/发送操作,以及UDP的数据收发方法。提供了完整的TCP服务器与客户端代码示例,并给出使用技巧:优先异步方法、缓冲区优化、异常处理等。Socket类通过合理参数配置和方法调用,可构建稳定高效的网络通信应用,开发者需根据业务需求选择适当协议并注意资

weixin_66547608的博客 1242

vscode中创建vue快捷键

1.安装Vetur插件(扩展里面直接搜) 2.vscode 界面里面左上角选则 文件=> 首选项=> 用户代码片段=>新建全局代码片段=>在输入框中新建名称为vue.json 3.删除里面的注释,当然你也可以留着,把下面的代码粘贴进去! { // Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // descri

Leon_940002463的博客 3207

深入RK3588内存管理:如何用dma_buf_alloc和mpp_buffer为RGA2分配4G以内内存(附kernel版本选择)

本文深入探讨了RK3588平台上RGA2核心的4G内存限制问题,详细解析了dma_buf_alloc和mpp_buffer两种内存分配方案的技术细节与适用场景。通过代码示例和性能对比,帮助开发者优化高分辨率视频处理流程,并提供了内核版本选择与常见错误排查指南。

weixin_29168153的博客 364

用C#实现基于用C#实现基于TCP协议的网络通讯

TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。 要进行基于TCP协议的网络通

huangchao19830725的专栏 521

AF3​​​​​​​ Msa、TemplateHit、HitMetadata类解读

Msa:处理 多序列比对 (MSA) 结果,为 AlphaFold3 提供 序列进化信息。 TemplateHit:存储 查询序列与模板结构的比对信息,用于 筛选模板。 HitMetadata:提供 比对模板的 PDB 结构信息,帮助 解析和使用模板数据。

qq_27390023的博客 819

用C#实现基于TCP协议的网络通讯

TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。  要进行基于TCP协议的网络通讯,首

xujun1979的专栏 729

【实战指南】DBeaver EE Windows版高效破解与配置全解析

本文详细解析了DBeaver EE Windows版的高效破解与配置方法,涵盖Java环境配置、破解包部署、配置文件修改等关键步骤,并提供了性能优化和数据库连接的最佳实践。适用于需要解锁企业版高级功能的数据库开发人员,帮助提升工作效率。

weixin_28837817的博客 1906

核磁分析必备,ACD/Labs软件使用全解析

核磁共振(NMR)是化学分析中的重要工具,而ACD/Labs提供了一套强大的软件解决方案。从实验设计到数据解读,ACD/Labs 的 NMR 预测可以显著加快您的工作流程。使用 ACD/NMR 预测可以:根据化学结构预测 1H、13C、15N、19F 和 31P 核的全套 1D 和 2D NMR 光谱;在几秒钟内计算化学位移和耦合常数;利用内部数据训练算法,提高新化学空间的准确性。

a13981820402的博客 5636

Socket网络通讯入门(一)

简单学习了解一下Socket网络通讯入门。提示:以下是本篇文章正文内容,下面仅供参考上面服务端和客户端的代码,只是用于简单交互示列,正式使用不会如此写法,因为阻塞性太大,正常使用会异步处理。

qq_37524903的博客 1337

ADS笔记,新旧两组仿真数据进行绘图和列表对比

原理图器件参数的不同,怎么进行对比观看,操作如下。

彭辉荣的博客 3869

Socket网络通讯_TCP协议

Socket网络通讯即如上图所示 图中IP代表服务器地址,那么端口是什么呢? ????男生去女生宿舍找对象,进女生宿舍的第一关就是宿管大妈,你告诉宿管大妈你要找哪哪个房间号(端口号)的哪女生 服务器至少需要两个Socket,一个负责监听、一个负责联系 两种协议:1️⃣TCP(三次握手) 2️⃣UDP(效率高但不稳定) 我们常用TCP协议,因为TCP协议传输数据时数据不容易丢失(安全、稳定、但效率低) 下面就举一个简单的???? 左侧为发送数据的输入框,单击“发送数据”把数据发送到指定I

qq_48705696的博客 268

基于STM32L4XX 、HAL库的TMP144YFFR数字温度传感器驱动应用C语言程序设计

define TMP144_ADDRESS 0x00 // 默认为全局地址,用于单器件或MDA命令。#define TMP144_CMD_READ_TEMP 0x00 // 读取温度寄存器命令。if (temp_raw & 0x800) { // 判断第11位(符号位)

PP_Cottage的博客 91

【华为OD机试真题】459、小扇和小船的数字游戏、数字游戏 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

### 🎃题目描述 >小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n(1  现在求 m 的最小值

KJ.JK 1719

用C#实现基于TCP协议的网络通讯(1)

导读:   TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。   要进行基于T

黑客攻防 | .net 源代码下载 | ASP.NET开发 | ORACLE数据库开发 | JAVASCRIPT脚本下载 | java源码下载 749

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

网络通讯,基于TCP协议,C#,实现

用C#实现基于TCP协议的网络通讯       TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通

lee576的专栏 3513

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

c# socket编程技术文章汇总

.NET 3.5 Socket APM C#用socket传输类或结构,以及结构和bytes[]互转 一个简易的Socket组件,希望与牛人菜鸟们分享交流 C# HttpWebRequest可断点上传,下载文件;SOCKET多线程多管道可断点传送大文

songboriceboy的专栏 2004

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# 网络通讯核心知识点笔记

本文系统介绍了网络协议基础与编程实践,重点解析了OSI七层模型和核心协议。主要内容包括:1)OSI模型各层功能及典型协议(TCP/UDP/HTTP等);2)TCP/UDP协议深度对比,详解TCP三次握手和四次挥手机制;3)C#网络编程实现方法,涵盖TcpListener/TcpClient/UdpClient使用要点;4)协议选择原则,强调根据可靠性、延迟等需求权衡TCP与UDP,以及RS232/RS485/RJ-45等物理接口的适用场景。文章为网络通信开发提供了系统的理论指导和实践参考。

weixin_66547608的博客 836

C#实现基于TCP协议的网络通讯。

TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。    要进行基于TCP协议的网络通讯

mchaojie1的专栏 465

基于tcp协议网上聊天程序 c语言,用C语言实现基于TCP协议的网络通讯

《用C语言实现基于TCP协议的网络通讯》由会员分享,可在线阅读,更多相关《用C语言实现基于TCP协议的网络通讯(6页珍藏版)》请在人人文库网上搜索。1、用C#实现基于TCP协议的网络通讯TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天...

weixin_36276359的博客 1008

【转】C#-Socket监听消息处理

Socket示例:客户端和服务器端代码

落花流水 6844

第6章第4节:自定义分词器

本节详解Elasticsearch自定义分词器,解析analyzer三段式结构(char_filter→tokenizer→filter),掌握常用组件如ik_max_word、synonym_graph、ngram等。通过_analyze API调试分词效果,实现“索引时扩展同义词、搜索时不带”的生产级方案,提升中文搜索与智能提示体验。

啊渊的专栏 782
上一篇: c#软件开发学习笔记--Modbus-ASCII通讯
下一篇: c#软件开发学习笔记--TcpListener\TcpClient\UdpClient
Z599817841
博客等级 码龄4年 12粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值