网络套接字socket,利用UDP协议实现服务器与客户端通信

告别动态IP烦恼:手把手教你为富士胶片ApeosPort 3410SD设置静态IP(附路由器后台查看技巧) 本文详细指导如何为富士胶片ApeosPort 3410SD激光一体机设置静态IP,解决动态IP导致的打印中断问题。从路由器后台查看技巧到驱动安装细节,提供全流程配置指南,帮助用户实现高效办公部署。 阅读详情

两台主机之间的通信,是通过网卡再经过网络,互相传输,那么我们先来介绍再通信中想要在全球的pc中找到你要发送数据那一台,就需要IP来标识,那么这里在数据报文中就包含了源IP和目的IP,分别标识的是数据从哪来要到那里去。

有了IP那么要怎么认识是主机的哪个进程收数据,这时就有端口号,一个端口号标识着一台主机上的唯一的进程。那么有个问题?
为什么不用PID而要用端口号?因为在一台主机或者服务器上,一个进程的pid随着系统的重启会发生变化,发生变化了,对于客户端没有什么影响,但是对于服务器,客户端就不知道访问的是哪个进程了,所以用一个传输层的端口号,这样就可以通过绑定的端口号来进行访问。

端口号:端口号是一个两个字节的整数 0 ~ 65535
端口号是用来标识一个进程
一台主机要访问另一台主机,那么就需要IP和端口号来标识一台进程
通常情况下,一个端口号只能被一个进程绑定。

TCP/UDP特点

TCP

  • 传输层协议
  • 有链接
  • 可靠传输
  • 面向字节流

UDP

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

关于网路中传输的字节序

计算机是分有大端和小端。有这个差异是因为计算机制造厂商,那么在网络中传输也就统一了字节序。
小端机,就是在低地址处存地位
大端机,是在高地址处存地位
而网络中规定为大端传输,所以就要在传输的过程中把一些数值转换成网络字节序来进行传输。
那么我们就要了解一组API

#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong); // 主机转网络int
uint16_t htons(uint16_t hostshort); // 主机转网络short
uint32_t ntohl(uint32_t netlong); // 网络转主机int
uint16_t ntohs(uint16_t netshort); // 网络转主机short

这里再来个linux下的命令netstat -nap 查看

socket套接字

socket套接字是TCP/IP协议族相关的API,返回值为一个文件描述符,我们先来认识socket函数接口

#include <sys/socket.h>
int socket(int domain, int type, int protocol);

参数介绍:
domain :是协议是IPV4,还是IPV6,在当今主要还是IPV4,为4个字节,IPV6为16个字节。
type:是使用TCP还是UDP等等一些协议进行传输
protocol:用来指定socket所使用的传输协议编号。这一参数通常不具体设置,一般设置为0
返回值:
返回一个正整数,是文件描述符。通过对文件描述符的操作来进行网络上数据的传输。

前面我们说了,在网络通信中如何标识一个进程,那就是端口号,所以我们在服务器端就会绑定一个端口号,这样就可以标识出一个进程。通过端口号就可以找到对应的进程进行通信。

介绍绑定端口号API

#include <sys/socket.h>
int bind(int sock, const struct sockaddr* address,\
socklen_t address_len);

参数:
sock:为socket返回的文件描述符
address:结构体里面有IP协议,有要绑定的端口号和IP地址,这是一个通用的结构体,因为c语言没有多态,多以就用一个结构体通过强转来实现自己想要的。
address_

socket(套接字)实现udp通信 储备知识 网络字节序 udp使用的接口 sockaddr结构 简单的udp通信 优化服务器 阅读详情

相关推荐

<网络> 网络Socket 编程基于UDP协议模拟简易网络通信

网络编程(Network Programming)是指编写程序来实现计算机网络之间的通信。这通常涉及到使用套接字(sockets)来建立连接、发送和接收数据。网络编程可以应用于各种场景,如开发网站、构建分布式系统、实现网络服务等。

weixin_61522065的博客 2487

Unity实现UDP客户端与服务器通信功能

Unity实现UDP客户端与服务器通信功能简单实现 前言 在Unity开发中,我们开发的程序经常需要和服务器或者其他的客户端进行通信,以便进行数据的传输。通信分好几种,比如TCP/IP,UDP,Socket等等。在之前的项目中,我做过一些使用UDP进行通信的项目。在这篇博客中我记录一下使用UDP实现一种最简单的客户端与服务器进行通信功能的流程。 实现步骤 1.在Unity项目中新建UDP通信脚本,代码如下所示: using UnityEngine; using System.Collections; //引

波波斯维奇 1万+

Java利用TCP协议实现客户端与服务器通信【附通信源码】

对于如何进行客户端和服务器端数据的通信,就要用到数据的输入流和输出流了,**服务器端的Socket对象使用getOutputStream()方法获取到的输出流,将指向客户端的Socket对象使用getInputStream()方法获取到的输入流。由此就实现在服务器向客户端发送数据的一个过程,**同样的道理,客户端端的Socket对象使用getOutputStream()方法获取到的输出流,将指向服务器端的Socket对象使用getInputStream()方法获取到的输入流。//获取到客户端的输入流。

2401_89213203的博客 2220

网络通信(Socket/TCP/UDP)

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。[2]TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有TelnetFTPSMTP。

不负青春 3392

SocketTool网络开发TCP/UDP端口协议调试工具

提供五种Socket调试方案。SocketTool(tcpudp调试工具)可以帮助你检查网络应用软件及硬件的通讯情况,可以创建创建Socket服务器,创建UDP组播地址及端口,创建UDP Client客户端,可指定对方IP和端口,本地端口。

利用socket实现客户端服务器之间简单通信

利用socket实现客户端与服务器之间的简单通信,快速熟悉掌握三次握手与四次挥手。。。

Android开发者必看:F2FS文件系统如何优化你的手机存储性能(附实测数据对比)

本文深入解析了F2FS文件系统如何针对闪存特性优化Android设备存储性能。通过对比ext4,F2FS采用追加写和冷热数据分离策略,将随机写转化为顺序写,显著提升写入速度并减少GC卡顿。实测数据显示,其在随机写入和SQLite事务等场景下性能提升显著,为开发者提供了优化应用IO性能的关键思路。

weixin_29248313的博客 325

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 812

训练AI:从数据收集到模型部署的完整指南

如果你刚开始接触AI,建议先学习一些基础的编程和机器学习知识,还可以使用现成的AI平台和工具来帮助你训练AI模型。在这篇文章中,我们将详细探讨从数据收集到模型部署的完整步骤,并提供一些有用的技巧和工具,以帮助你成功地训练自己的AI模型。在收集数据时,你需要从可靠的数据源(如数据仓库、数据集市、API接口)获取数据,确保数据的准确性和完整性。常用的划分比例是70%的数据集用于训练模型、15%的数据集用于验证模型,5%的数据集用于超参数调整,最后10%的数据集用于测试模型的性能。测试数据集用于测试模型的性能。

a_wsnd的博客 4166

Kubernetes集群资源优化实战:Volcano调度器如何帮你省下30%GPU算力

本文详细介绍了如何通过Volcano调度器的Binpack策略优化Kubernetes集群中的GPU资源利用率,解决AI模型训练中的资源碎片化问题。通过实战配置和调优指南,帮助用户提升30%的GPU算力利用率,显著降低任务等待时间和硬件成本。

weixin_30832143的博客 507

把 300 亿参数的 Qwen3-30B-A3B 塞进 16GB 手机:MoE、mmap 与内存轮转的完整拆解

这篇文章详细拆解了如何在16GB内存手机上运行305亿参数的Qwen3-30B-A3B大模型。作者通过MoE(专家混合)架构、内存映射(mmap)和专用NPU内存(rpcmem)的巧妙结合实现了这一"不可能"的任务。 核心原理在于:MoE模型将庞大的前馈网络拆分为128个专家,每个词只激活8个专家,97%的权重处于闲置状态;通过mmap技术按需加载当前需要的专家权重;同时利用NPU专用内存高效计算关键部分。三个关键开关(GGML_HEXAGON_MOE_PAGING=1、--mmap、GGML_CPU_RE

q742971636的博客 187

【2025软考高级架构师】基础知识部分——6、软件架构设计

(1)架构是对系统的抽象(2)架构由多个结构组成(3)任何软件都存在架构(4)元素及其行为的集合构成架构的内容(5)架构具有“基础”性(6)架构隐含有“决策”

qq837993702的博客 1万+

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

银行信息系统应用架构详解 884

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 网络基础概念理解
下一篇: 基于TCP协议实现Linux下客户端与服务器之间的通信,实现多线程、多进程服务器
GangStudyIT
博客等级 码龄9年 46粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值