套接字编程

news2025/4/11 15:20:47

网络套接字编程 

先将数据通过os,将数据发送到目标主机(手段)TCP/IP协议完成,再在本主机将收到的数据推送到自己上层指定的进程,这时候网络通信本质上就成了进程间的通信。其中ip地址可以标识互联网上唯一的一台主机,而端口号可以标识主机内唯一的一个进程。网络通信本质就是通过IP+PORT构建进程的唯一性,来进行基于网络的进程间的通信。

端口号为什么不采用进程的pid?并不是所有的进程都要进行网络间的通信,如果用pid进行标识,旧的对管理进程的结构体加字段来对其是否进行网络通信加字段,其次因为pid是属于os中进程管理模块,如果我们的端口号采用pid就意味着增加了网络通信管理和进程管理的耦合度,一旦进程管理对pid进行了更改还要考虑网络通信管理模块,于是自己新起一套端口号来标识主机中需要进行网络通信的进程。

面向字节流, 在传输层没有报文的概念,它收到一堆的数据,把这一堆的数据交给上层应用层也可以一个字节一个字节的交,对于这个二进制的字节数据如何解释,tcp层是不关心的 ,他只关心应用层要多少就给多少,具体的解释是交由应用层来处理的,这个我们称之为字节流。

网络字节序列是为了解决不同主机 采用大小端存储差异的问题。所以规定:网络序列必须是大端(低地址高权值位而高地址是低权值位),发数据必须转换成为大端,接收数据再按照大端去接收。  

为了让大家可以用一套套接字的既可以进行网络间通信又可以进行本地通信,于是设计出了一个公共的数据结构struct sockaddr,这个结构体可以兼容sockaddr_in和sockaddr_un,传递参数的时候根据通信的类型对struct sockaddr进行一下强转就可以了。下面介绍一下sockaddr结构体,因为socket的api需要用到这个变量类型。

lo就是loop,127.0.0.1: 本地环回,就表示的就是当前主机默认对应的ip地址,通常用来进行本地通信或者测试。用来走网络协议栈但是并不用于队中把数据发送到网络。 如果我们在127.0.0.1这个IP地址上测试通过了,但是在网络当中测试的时候不通过,大概率是网络的问题。

我们的云服务器,不需要bind ip地址,需要让服务器自己指定ip地址,但是自己本地装的虚拟机或者物理机器是允许的。

网络通信属于进程间通信的范畴, 我们的网络套接字本质也是文件,有对应的文件描述符。

守护进程

1、进程组分为前台任务和后台任务

2、如果后台任务提到前台,也就是谁当前使用该终端,老的前台任务bash就无法运行了。ctrl+c可以干掉该任务然后让bash重新回到前台运行

3、任何时刻,在会话中只能有一个前台任务在运行!所以我们在命令行启动一个前台进程之后,bash就无法运行了。

4、如果登录就是创建一个会话,bash任务,启动我们的进程,就是在当前会话中创建新的前后台任务,那么如果我们退出呢就是销毁该会话,销毁会话就可能会影响会话内部的所有任务。

一般网络服务器,为了不受到用户登注销的影响,就需要让该进程该会话中独立出来,不要跟任何一个用户会话产生关联,独立成为一个会话,从包含关系变成并列关系,就有了守护进程的运行方式。   pid_t setsid(void)谁调用该函数就把自己设立成为一个新的会话,成功了就返回调用进程的pid。 

url

要访问服务器,必须知道服务器的IP+PORT,一般公司提供服务并不是提供的IP+PORT,而是用域名提供服务。域名解析服务:将域名www.baidu.com解析成为ip地址110.242.68.4。

url是统一资源定位符,通过url可以唯一确定全网当中唯一的一份资源,可能是图片、音频等资源,让后通过端口对应的进程将这份资源download下来。登录信息现在不这么用了,现在登录都是网页级别的了,不会再域名当中出现登录信息了。由于服务器端的端口号不能随意指定,必须是总所周知的,且不能随便更改的,所以端口号和成熟的应用层协议是一一对应强相关的。https对应的端口号是443,而http对应的端口号是80,所以为什么访问网站的时候没有加上端口号是因为浏览器会自动识别协议名称,而协议有对应的端口号,所以可以省略端口号。 web根目录不一定是Linux下的根目录,是通过web服务器去跟我们进行解释的,我们要访问某种资源一定要通过根目录配合上反斜杠标识服务器目录下某个路径下的资源。?问号之后代表的是参数,比如说搜索的内容,这些参数最终都是要交给我要访问的资源的。参数是kv的,比如uid(key)=1(value),用&做为分隔符级联多个参数。

url对一些特殊的字符需要进行解码和编码的操作,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round 964 (Div. 4) A~G

封面原图 画师ideolo A - AB Again? 题意 给你一个两位数&#xff0c;把他的个位和十位加起来 代码 #include <bits/stdc.h> using namespace std; typedef long long ll; typedef double db; typedef pair<int,int> pii; typedef pair<ll,ll> pll;voi…

嵌入式学习之路 13(C语言基础学习——预处理命令)

编程流程 在进行程序开发时&#xff0c;通常遵循编辑源代码、编译、运行和调试这几个主要步骤。 编辑源代码&#xff1a;使用文本编辑器创建或修改程序的源代码&#xff0c;这是整个编程过程的起点。编译&#xff1a;将源代码转换为可执行文件的关键步骤。 预处理&#xff1a…

LeetCode.27.移除元素

题目描述&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以…

Mojo使用调试工具(Visual Studio Code)详解

Visual Studio Code 的 Mojo 扩展使您可以将 VS Code 的内置调试器与 Mojo 程序一起使用。(Mojo 扩展还支持调试 C、C++ 和 Objective-C。) 有关 VS Code 调试功能的完整介绍,请参阅 Visual Studio Code 中的调试。 本文介绍了可通过 Mojo 扩展获得的功能,以及 Mojo 调试…

【k8s集群部署篇】在openEuler环境下部署多master高可用kubernetes集群详细教程(V1.30版本)

【k8s集群部署篇】在openEuler环境下部署多master高可用kubernetes集群详细教程(V1.30版本) 一、相关名词介绍1.1 k8s简介1.2 Keepalived简介1.3 HAProxy简介二、本次实践介绍2.1 环境规划介绍2.2 本次实践简介三、所有节点基础环境配置3.1 主机配置工作3.2 关闭防火墙和seli…

[Unity实战]Mirror网络与Addressable场景管理

前言 很遗憾&#xff0c;Mirror包括UNET的场景管理不支持Addressables。我做手机游戏&#xff0c;需要实现服务器广播场景切换&#xff0c;但主程序没有场景&#xff0c;热更代码和资源都在AB包里。我已经在Google上搜索了一段时间&#xff0c;没有找到有用的解决方案。 Redd…

KVM——虚拟机中使用命令行形式安装虚拟机

目录 一. 删除虚拟机中的虚拟机步骤 二. 虚拟机中以命令行形式安装虚拟机 一. 删除虚拟机中的虚拟机步骤 这样就删除成功了。 二. 虚拟机中以命令行形式安装虚拟机 安装 [rootkvm-server ~]# virt-install --connect qemu:///system -n vm10 -r 3100 --disk path/var/lib…

【Material-UI】复杂按钮 (Complex Button) 自定义详解

文章目录 一、ButtonBase 组件简介二、实例讲解&#xff1a;创建复杂的图片按钮1. 样式定义2. 核心组件构建3. 交互效果 三、高级自定义技巧1. 响应式设计2. 动态内容与动画 四、总结 在现代 Web 应用中&#xff0c;按钮不仅仅是一个点击交互元素&#xff0c;它们也承载着传递信…

批发行业进销存-登录适配 android 横竖屏幕 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、横竖屏切换的意义 以下是移动端横屏竖屏可切换在进销存中的一些重要应用&#xff1a; a、数据录入与查看 在录入商品信息、库存数量等大量数据时&#xff0c;横屏模式可以提供更宽阔的输入区域&#xff0c;减少输入错误。例如&#xff0c;在输入长串的商品编码或详细的商…

数值分析【1】

第一章&#xff1a; 相对误差 四 规格化浮点数 秦九韶 第二章&#xff1a; 二分法 不动点迭代法 Taylor 埃特金加速 构造新的同根函数 有个公式 牛顿法&#xff08;切线法&#xff09;、弦截法&#xff08;割线法&#xff09;

谷粒商城实战笔记-137-商城业务-首页-整合dev-tools渲染一级分类数据

文章目录 一&#xff0c;使用热加载工具spring-boot-devtools1&#xff0c;引入devtools依赖2&#xff0c;ctrlshiftf9 编译静态资源 二&#xff0c;thymeleaf原理三&#xff0c;渲染一级分类 一&#xff0c;使用热加载工具spring-boot-devtools 因为我们采用的前后端一体的开…

Windows 平台 Docker Protainer可视化平台,忘记登录密码,重置密码

下载protainer 的文件 运行重置密码的密令 docker run --rm -v C:\Users\Administrator\AppData\Local\Docker:/data portainer/helper-reset-password成功运行后可以看到重置的密码 把key 和db 文件重新上传到容器里 docker cp portainer.key portainer:/data/portainer.k…

5.10.结构化开发方法-结构化分析

案例分析第一题会考 结构化特点&#xff1a;自顶向下&#xff0c;逐步分解&#xff0c;面向数据。三大模型&#xff1a;功能模型&#xff08;数据流图&#xff09;、行为模型&#xff08;状态转换图&#xff09;、数据模型(E-R图)以及数据字典。 数据流图DFD 数据流图DFD基…

网络IO模型及零拷贝问题

文章目录 BIOaccept监听案例read案例利用多线程 NIO案例NIO存在的问题 IO multiplexing-IO多路复用文件描述符(FD&#xff0c;句柄&#xff09; 是什么reactor反应模式 select方法优点缺点小总结 poll方法优点缺点 epoll方法 Reactor模式单Reactor单线程 单Reactor多线程主从Re…

linux docker安装 gitlab后忘记root密码如何找回

1. docker ps - a 查看当前gitlab 当前的id2. docker exec -it gitlab /bin/bash 进入docker git 容器中【gitlab 注意可以上图中的name&#xff0c;也可以是id都可以的】,如下图3.gitlab-rails console -e production 输入该指令&#xff0c;启动Ruby on Rails控制台&…

Copy as cURL 字段含义

当前端在开发过程中&#xff0c;遇到接口错误反馈给后端人员时&#xff0c;一般在此接口处右键复制为cURL。 格式如下&#xff1a; curl https://xxx.xxx.cn/xxx/xxx/management/record/list \-H accept: application/json, text/plain, */* \-H accept-language: zh-CN,zh;q0…

LVS集群中的负载均衡技术

目录 1、LVS技术原理 2、NAT模式原理及部署方法 1、工作原理 2、部署方法 1、网络配置 2、软件安装与启用 3、测试 2、DR模式工作原理及部署方法 1、工作原理 2、部署方法 1、网络配置 2、解决vip响应问题 3、测试 3、ipvsadm命令及参数 1.管理集群服务中的增删…

数据同步工具之Flink CDC

Flink CDC&#xff08;Change Data Capture&#xff09;是基于Apache Flink的一个扩展&#xff0c;用于捕获和处理数据库中的数据变化。它能够实时捕获关系数据库中的数据变更&#xff08;如插入、更新、删除操作&#xff09;&#xff0c;并将这些变更流式传输到Flink进行处理。…

【OceanBase系列】—— OceanBase应急三板斧

作者&#xff1a; 花名&#xff1a;洪波&#xff0c; OceanBase 数据库解决方案架构师 目前随着OceanBase数据库越来越流行&#xff0c;社区已经有很多用户在生产环境使用了OceanBase&#xff0c;也有不少用户的核心业务用到了OceanBase数据库&#xff0c;在使用OceanBase数据库…

演示:基于WPF的DrawingVisual开发的矢量地图

一、目的&#xff1a;基于WPF的DrawingVisual开发的矢量地图 二、预览 默认样式 深黑样式 深蓝色样式 深蓝色透明样式 三、环境 VS2022&#xff0c;Net7&#xff0c;GDAL,审图号为GS(2019)1822号矢量数据,DrawingVisual 四、主要功能 支持多种显示样式&#xff08;默认样式&…