C# Socket网络编程(二)

树莓派通过TTL3.3转485 Modbus采集水表 所需道具 树莓派0,我用的是树莓派zero wh; 具有光电直读功能的有线水表,我用的是咸鱼淘的埃美柯LXSY-20E1; TTL3.3 转 485模块,带隔离的贵些; 5V转12V升压模块。 原理 树莓派有UART(GPIO14 Tx 和 GPIO15 Rx)串口通讯功能,电器特性是3.3V TTL,直读远传水表支持M-Bus/485通讯接口,我买的光电直读水表485要求12V供电(根据仪表厂家说明书)。TTL和485虽然都是串口通讯,但电器特性不一样,不能直接接!我已经烧掉一个树莓派... 阅读详情

目录

Socket相关的内容

什么是Socket

Socket的本质

Socket的作用

Socket的典型应用

Socket介绍

网络传输

OSI七层网络模型

网络模型

IP地址与域名

端口的概念

Socket/TCP五层网络模型图

TCP和UDP区别


Socket相关的内容

什么是Socket

在计算机通信领域,Socket被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过Socket这种约定,一台计算机可以接收到其他计算机的数据,也可以向其他计算机发送数据。

Socket的本质

Socket的本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这个就是Scoket编程接口

Socket的作用

Socket的英文原意是“插座”,的意思,通常在计算机编程中称作套接字,可以用来实现不同虚拟机或不同计算机之间的通信

Socket的典型应用

  1. Socket的应用之一就是Web服务器和浏览器:浏览器获取用户输入的URL地址,向服务器发起请求,服务器分析接收到的URL请求,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,将文字、图片、视频等元素呈现给用户

  2. QQ或者微信或者默默等聊天社交工具等:本地的QQ或微信程序就是客户端,登录过程就是连接服务器的过程,聊天过程就是Socket的发送和接受信息过程

Socket介绍

把Socket比作门,门外是邮局,你送信就需要通过门,把信从门送出去到邮局,然后由邮局帮你送达目标的门,目的地主人再打开门,从门取出邮局送过来的信。

分析一下通信过程(打电话):

两人之间打电话:

  1. 需要做好的保障:两人都要有电话,可正常通话的电话就是Socket

    可正常通话的电话:电话能用,电话要插有电话线(信号器),电话要有卡

  2. 发送消息者通过一端的电话拨号等待

  3. 接收消息者通过另一端的电话接听

  4. 发送消息者和接受消息者之间可以进行通过

  5. 消息沟通完毕之后由任意一端先Say Go Bey!挂断电话断开

  6. 剩余的一端被迫断开连接,至此通信结束

网络传输

OSI七层网络模型

在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。

特点:

  1. 人们可以很容易的讨论和学习协议的规范细节。

  2. 层间的标准接口方便了工程模块化。

  3. 创建了一个更好的互连环境。

  4. 降低了复杂度,使程序更容易修改,产品开发的速度更快。

  5. 每层利用紧邻的下层服务,更容易记住个层的功能。

网络模型

网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给另外一个设备,然后接受另外一个设备反馈的数据。

现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。

在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动,而服务器为了能够时刻相应连接,则需要一直启动。例如以打电话为例,首先拨号的人类似于客户端,接听电话的人必须保持电话畅通类似于服务器。

连接一旦建立以后,客户端和服务器端就可以进行数据传递了,而且两者的身份是等价的。

在一些程序中,程序既有客户端功能也有服务器端功能,最常见的软件就是BT、emule这类软件了。

IP地址与域名

在现实生活中,如果要打电话则需要知道对应人的电话号码,如果要寄信则需要知道收信人的地址。在网络中也是这样,需要知道一个设备的位置,则需要使用该设备的IP地址,具体的连接过程由硬件实现,程序员不需要过多的关心。

IP地址是一个规定,现在使用的是IPv4,既由4个0-255之间的数字组成,在计算机内部存储时只需要4个字节即可。在计算机中,IP地址是分配给网卡的,每个网卡有一个唯一的IP地址,如果一个计算机有多个网卡,则该台计算机则拥有多个不同的IP地址,在同一个网络内部,IP地址不能相同。IP地址的概念类似于电话号码、身份证这样的概念。

由于IP地址不方便记忆,所以有专门创造了域名(Domain Name)的概念,其实就是给IP取一个字符的名字,例如163.com、sina.com等。IP和域名之间存在一定的对应关系。如果把IP地址类比成身份证号的话,那么域名就是你的姓名。

其实在网络中只能使用IP地址进行数据传输,所以在传输以前,需要把域名转换为IP,这个由称作DNS的服务器专门来完成。

所以在网络编程中,可以使用IP或域名来标识网络上的一台设备。

端口的概念

为了在一台设备上可以运行多个程序,人为的设计了端口(Port)的概念,类似的例子是公司内部的分机号码。

规定一个设备有216个,也就是65536个端口,每个端口对应一个唯一的程序。每个网络程序,无论是客户端还是服务器端,都对应一个或多个特定的端口号。由于0-1024之间多被操作系统占用,所以实际编程时一般采用1024以后的端口号。

使用端口号,可以找到一台设备上唯一的一个程序。所以如果需要和某台计算机建立连接的话,只需要知道IP地址或域名即可,但是如果想和该台计算机上的某个程序交换数据的话,还必须知道该程序使用的端口号。

Socket/TCP五层网络模型图

TCP和UDP区别

UDP:

  1. 面向无连接,将数据及源封装在数据包中,不需要建立连接

  2. 每个数据报的大小限制在64K内

  3. 因无连接,是不可靠协议

  4. 不需要连接连接,速度快

TCP:

  1. 建立连接,形成传输数据的通道

  2. 在连接中进行大数据量传输,以字节流的形式

  3. 通过三次握手(四次挥手)完成连接,是可靠协议

  4. 必须建立连接,效率会稍低

TCP和UDP协议不互通哟!!!!!

探索Three.js:利用ShaderMaterial实现动态着色器特效 本文深入探讨了Three.js中ShaderMaterial的应用,指导开发者利用GLSL编写自定义着色器实现动态特效。文章从核心概念GLSL、Uniforms与Attributes讲起,通过创建动态颜色变化平面的实战案例,逐步进阶到实现波纹扩散与动态光影等高级效果,并提供了性能优化与调试技巧,帮助读者掌握创建高性能WebGL视觉特效的关键技能。 阅读详情

相关推荐

2.13寸电子墨水屏HINK-E0213+esp8266

很久以前买的一块电子墨水屏,运气很好,这个型号HINK-E0213资料很全,而且微雪官网也有相关电路资料等。

梦境虽美,却不长. 3002

网络基础学习:osi网络七层模型

OSI通常被叫做开放式系统互联参考模型,英语全称:Open System Interconnection Model,缩写:OSI;简称为OSI模型这个OSI模型是由ISO提出来的,英语全称:International Organization for Standardization,缩写:ISO;简称国际标准化组织OSI是一个非政府非营利的国际标准制定组织,由全球各个国家的标准机构组成。你还别说,OSI与ISO居然如此对称,这是有意为之吗?

杜永康的博客 8803

win10删除vmware12后,重新安装失败(遗留注册表问题)解决总结

之前安装过一次VMware虚拟机,后来由于某些已遗忘原因把它卸载了,但是没有卸载完全,为以后安装留下了一些麻烦,现在根据我google很多内容总结后写下了自己的解决办法。 一些我搜的的可以用的VM12的注册码 5A02H-AU243-TZJ49-GTC7K-3C61N ZZ510-DYX47-48ERP-D6XZG-YCKU2 YV5MU-2FX5H-M841P-LZX5X-PYHX8

Jeason的博客 2万+

计算机网络——7层OSI网络模型

计算机网络——7层OSI网络模型

NRWHF的博客 1万+

手把手教你使用ESM-2进行蛋白质结构预测:从安装到实战

本文详细介绍了如何使用ESM-2蛋白质语言模型进行蛋白质结构预测,从环境准备、模型安装到实战应用。通过逐步指导,读者可以掌握ESM-2的配置、单序列预测、结果可视化及高级优化技巧,适用于生物信息学研究和药物开发。

weixin_29306875的博客 532

UE5游戏逆向实战:用FModel提取.pak文件中的3D模型(附Dumper-7避坑指南)

本文详细介绍了在UE5游戏逆向工程中使用FModel提取.pak文件中3D模型的实战技巧,包括Dumper-7工具的深度配置与避坑指南。针对UE5特有的unversioned属性系统,提供了从源码编译到智能注入的全链路解决方案,帮助开发者高效获取游戏资产并优化处理流程。

weixin_30374009的博客 495

OSI七层模型个人理解

个人比较喜欢从下往上理解,新手做笔记,如理解有误,欢迎评论纠正。 物理层 — 传输线路的特性(机械特性、电气特性、功能特性,过程特性) 物理层可以看作是一条线,定义了这条传输线的特性。 作为 OSI参考模型中最低的一层,物理层的作用是实现计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。该层的主要任务是确定与传输媒体的接口的一些特性(机械特性、电气特性、功能特性,过程特性)。 数据链路层 — 两个点通讯 数据链路层可以看作是.

weixin_42887343的博客 5136

SE模块理解+SE-Resnet模块pytorch实现

文章目录SE模块理解SE实现注意力机制原因SE-resnet网络pytorch实现定义residual定义SE模块 SE模块理解 SENet是Squeeze-and-Excitation Networks的简称,拿到了ImageNet2017分类比赛冠军,其效果得到了认可,其提出的SE模块思想简单,易于实现,并且很容易可以加载到现有的网络模型框架中。SENet主要是学习了channel之间的相关性,筛选出了针对通道的注意力,稍微增加了一点计算量,但是效果比较好。 SE模块广泛应用于去噪,去雨方向,利用SE模

qq_42754919的博客 2万+

七层网络模型

文章目录 前言 一、网络模型 二、OSI七层网络模型 1.引入库 2.读入数据 总结 前言 在互联网技术里,有两件事最为重要,一个是TCP/IP协议,它是万物互联的事实标准;另一个是Linux操作系统,它是推动互联网技术走向繁荣的基石。在网络编程中最重要的模型便是OSI七层网络模型和TCP/IP四层网络模型 一、网络模型 二、OSI七层网络模型 1.介绍 七层模型,也称为OSI(Open System Interconnection)参考模型...

mzm1166的博客 7万+

25、格式化字符串攻击全解析

本文深入解析了格式化字符串攻击的原理与利用方式,涵盖缓冲区溢出与格式化字符串漏洞的区别,详细介绍了printf函数的工作机制、常见格式化说明符及其安全隐患。文章分析了三类典型编程错误导致的漏洞,并展示了如何通过恶意格式化字符串实现拒绝服务、内存读取和写入攻击。同时,提供了有效的防御措施,包括输入验证、使用安全函数、避免直接使用用户输入作为格式化字符串以及启用编译器安全选项,帮助开发者防范此类高危漏洞。

beer8的博客 83

基于simulink的智能驾驶领域--智能车道保持辅助系统仿真

LKAS通过摄像头等传感器检测车辆相对于车道线的位置,并自动调整转向,以帮助驾驶员保持在车道内行驶。将摄像头传感器模块的输出连接到车道线检测模块的输入端口,再将车道线检测模块的输出连接到转向控制器模块的输入端口,最后将转向控制器模块的输出连接到车辆动力学模型的转向输入端口,形成闭环控制系统。上升时间是指系统从初始转向角上升到目标转向角所需的时间,调节时间是指系统进入并保持在目标转向角一定范围内的所需时间。该控制器将根据摄像头传感器的数据调整车辆的转向角,以保持车辆在车道内行驶。

xiaoheshang_123的博客 161

计算机网络的OSI七层模型

计算机网络的OSI七层模型

林隐的博客 9749

Qt/C++编写自定义控件42-开关按钮

一、前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ、360卫士、金山毒霸等,都有很多开关控制一些操作,在Qt widgets应用项目上,在项目中应用些类似的开关按钮,估计也会为项目增添不少新鲜感。 总结了大部分的开关按钮控件,基本上有两大类,第一类是纯代码绘制,这种对代码的掌控度要求比较高,但是灵活性比较好...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 3327

C#网络编程二:Socket编程

一:什么是SOCKET socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的)。socket非常类似于电话插座。以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当...

weixin_33770878的博客 4026

廖雪峰Python教程[完整版]

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C#网络编程Socket之 二

可以通过调用Socket对象的SetSocketOption方法设置套接字的各种选项,它有3种重载的形式: public void SetSocketOption(SetSocketOptionLevel sl,SocketOptionName sn,byte[]value) public void SetSocketOption(SetSocketOptionLevel sl,SocketO...

weixin_34221112的博客 198

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C#网络编程系列文章(二)之Socket实现同步TCP服务器

原创性声明 本文作者:小竹zz  本文地址http://blog.youkuaiyun.com/zhujunxxxxx/article/details/44258719 转载请注明出处 本文介绍 在上一篇博客中我说了,我将会介绍c#中使用Socket和TcpListener和UdpClient实现各种同步和异步的TCP和UDP服务器,这些都是是我自己花了很多天的时间来总结的,这样一来相信刚接触c#网络编

超纯的小白兔 1万+

精雕软件(JDpaint) 5.5 绿色版

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

C#网络编程(二、Socket基本操作)

本文转自:http://blog.youkuaiyun.com/shanyongxu/article/details/51173781,本人学习受益匪浅,楼主把重点都标记出来了,请点击链接查看原文,尊重楼主大大版权。 基本操作   服务端对端口进行监听   首先需要进行的,就是开启本地计算机上某一端口

鳄鱼泪的博客 1632

C# 网络编程基础,socket篇[二]

1. 粘包,分包问题 根据[一]篇的做法,如果客户端快速连续向客户端发送多条信息: for(int i = 0; i < 100; i++) { clientSocket.Send(Encoding.UTF8.GetBytes(i.ToString())); } 那么服务端将不...

U张d的博客 341

C#网络编程二:SOCKET编程

一:什么是SOCKET socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的)。socket非常类似于电话插座。以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当...

weixin_34009794的博客 184

网络编程C#篇(二):Socket

Socket篇: System.Net.Sockets命名空间包含一些可以给低级的Winsock API提供实际.NET接口类. (1)套接字的结构: System.Net.Sockets命名空间的核心是Socket(套接字)类。它提供了Winsock API的C#管理代码的实现。Socket类的构造函数如下: ...

weixin_34107739的博客 129

网络编程C#篇(二):Socket简单实例

  版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://songchao.blog.51cto.com/133022/37993

jiangxinyu的专栏 1109

网络编程C#篇(二):Socket无连接简单实例

使用无连接的套接字,我们能够在自我包含的数据包里发送消息,采用独立的读函数读取消息,读取的消息是使用独立的发送函数发送的。但是UDP数据包不能保证可靠传输,存在许多的因素,比如网络繁忙等等,都有可能阻止数据包到达指定的目的地。 (1)UDP的简单应用: 由于UDP是一种无连接的协议。因此,为了使服务器应用能够发送和接收...

weixin_34117211的博客 333

网络编程C#篇(二):Socket面向连接简单实例

基于Windows套接字Socket,简单的面向连接的TCP服务器和客户机,实例: 简单的TCP服务器: 在服务器能够向客户机连接传输数据之前,必须做以下几件事情: 1: 创建一个套接字; 2:将所创建的套接字与本地的IPEndPoint...

weixin_33929309的博客 171
上一篇: C# Socket网络编程(一)
下一篇: C# Socket网络编程(三)
满山猴子
博客等级 码龄7年 48粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值