【.NET】Socket通信

实现了本机两个进程之间的通信 c#.net socket 在没学c# .net socket编程之前。感觉实现这个好难,一点眉目都没有。 但是,真的下决心去学以后。看一看基础,看一看前人的思路,实际的例子。稍稍用点心,体会体会,自己写几遍,就掌握了。然后,觉得好简单啊。如果当初 有畏难情绪,一直不下决心开始。那么,现在,依然觉得是难的,没有一点头绪,不知如何下手。 想做,有必要做,需要做,那就去做。下定决心,咬定青山不放松,想法设法去做到。就做到了。 这个风格不仅适用于计算机网络编程的学习。也适用于任何想做要做又没做过的事。 阅读详情

TCP/IP模型概述

1、OSI参考模型把计算机网络通信定义为七层框架模型
2、后来出现了TCP/IP模型,分为四个层次
**链路层:**网络硬件
网络层: IP层,主要把分组发往目标网络或主机
传输层:
提供端到端的数据通信,它分为两个不同的协议:TCP和UDP。TCP提供有质量保证的端到端的数据传输、负责数据分组、质量控制和超时重发。
UDP则负责简单地把数据报从一端发送到另一端。是否到达、是否按时到达、是否损坏必须由应用层来控制
用途:TCP用于面向连接的应用,UDP在及时性服务中有重要用途,如网络多媒体通信。
应用层:
应用层负责处理实际的应用程序细节,主要包括一些协议。
基于TCP的有FTP、HTTP等,基于UDP的有SNMP。

NET网络编程

1、.NET框架为网络开发提供两个顶层命名空间:Sysetm.NET、System.Web同时又包含多个子命名空间。
常用的几个

命名空间功能概述
System.Net为当前网络上流行的多种协议提供一个统一、简单的编程接口。WebRequest和WebResponse类
System.Net.Sockets为需要严格控制网络访问的开发人员提供Windows套接字接口的托管实现
System.WebHttp输出(HttpResponse)和读取HttpRequest,额外的类则提供了一些功能,用于服务器端的实用程序以及进程、cookie管理、文件传输、异常信息和输出缓存控制
System.Web.Services包含能够生成和使用XML Web service的类,这些服务是驻留在Web服务器中的可编程实体,并通过标准Internet协议公开

System.Net.Sockets命名空间主要类组成及功能
NetworkStream:为网络访问提供了基础数据流
Socket:实现了Berkeley套接字接口
TCPClient:为TCP网络服务提供了客户连接
TCPListener:用以监听TCP客户连接
UDPClient:用于提供UDP网络服务
System.Web命名空间的主要类组成及功能
HttpApplication:定义ASP.NET应用程序中所有应用程序对象的通用方法、属性和事件。
HttpApplicationState、HttpBrowserCapabilities
HttpContext:封装了所有关于HTTP请求的特定信息
HttpException:提供了生成HTTP异常的手段
HttpRequest:允许ASP.NET读取在Web请求中由客户发出的HTTP值
HTTPResponse:封装了来自一个ASP.NET操作的HTTP响应信息
HTTPUtility:为处理Web请求时的URL编码和解码提供了方法

套接字编程

Socket套接字是基于TCP协议上的一个抽象层。
服务端在一个总所周知的地址监听对服务的请求。也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址监听对服务的请求。也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。这个时刻,服务程序被“唤醒”并且为客户提供服务。服务器端程序执行如下:
1、打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求。
2、等待客户请求到达该端口。
3、接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,激活一个新的进程(或线程)来处理这个客户请求。新进程(或线程)处理此客户请求,并不需要对其他请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。
4、返回第二步,等待另一客户请求。
5、关闭服务器。
客户端:
1、打开一个通信通道,并连接到服务器所在主机的特定端口。
2、向服务器发服务请求报文,等待并接收应答;继续提出请求。
3、请求结束后关闭通信通道并终止。

Socket编程的通信方式

1、Socket进行编程时主要有4个概念,同步、异步、阻塞、非阻塞。其中,同步、异步时属于通信模式的概念,而阻塞、非阻塞则属于套接字模式的概念。
同步方式:
通信的同步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求。所以这个时候的所有请求将会在服务端得到同步。
异步方式:
通信的异步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步,这条请求的链路就像一个请求队列,所有的动作在这里不会得到同步。
阻塞方式:
阻塞套接字是指执行此套接字的网络调用时,所调用的函数只有在得到结果之后才会返回,在调用结果返回之前,当前线程会被挂起,即此套接字一直阻塞在网络调用上。比如调用StreamReader类的ReadLine()方法读取网络缓冲区的数据,如果调用的时候没有数据到达,那么此ReadLine( )方法将一直挂在调用上,直到读到一些数据,此函数才返回。
非阻塞方式:
非阻塞和阻塞的概念相对应,非阻塞套接字是在执行此套接字的网络调用时,即使不能立刻得到结果,该函数也不会阻塞当前线程,而会立刻返回。对于非阻塞套接字,同样调用StreamReader类的ReadLine()方法读取网络缓冲区的数据,不管是否读到数据都立刻返回,而不会一直挂在此函数调用上。
最常用的就是异步非阻塞套接字
套接字可以向Stream流一样被视为一个数据通道,这个通道架设在客户端应用程序和服务器端程序之间,数据的接收和写入均对这个通道来进行。因此要通过网络通信,就至少需要一对套接字。套接字之间的连接过程可以分为三个步骤:
1、服务器监听
2、客户端请求
3、连接确认
常用方法
1、Bind() 套接字绑定到特定地址
2、Listen() 完成地址的绑定后,使用Listen监听客服端发送的连接请求
3、Accept() 服务器进入监听状态,如有从客户端发来的连接请求,服务器使用Accept()方法来接收连接请求。并返回一个新的套接字,处理本连接的所有通信
4、Send() 发送数据
5、Receive() 接收数据
6、Connect()
7、Shutdown()
8、Close()

Unity 与 .net core 服务器(C#) Socket通信 前言本来按着前面是想用nodejs来做游戏服务器的,但是后面查资料,看着看着,好像发现一个新东西.net core。似乎nodejs对帧同步这种要求服务器运算量较大的,不算很好(但是可以nodejs + c++),而且既然.net core是最新的技术,那就与时俱进的研究看看。(目前对服务器不太了解,对.net core也不了解,自己找的资料也不多,有错误请大神指点一二),本文还是从与unity的... 阅读详情

相关推荐

.net socket 双向通信小程序

 完整代码:https://git.dev.tencent.com/pingaq/socket.git(腾讯云) //服务端代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Li...

dsadasjdka的博客 745

.Net Socket 基础编程

实际项目中会用到客户端请求服务端,然后服务端给客户端反馈相应的消息。其中Socket就是一种很好的方式。该方式只能实现服务端给客户端发送一次消息。接下来对它进行改造。目前我们实现的场景很简单,服务器只管发消息,客户端只管收消息。这就得判断客户端是否存在,若不存在则不能继续发送消息。服务端代码:以控制台应用的方式来体现。当关闭服务端时,客户端会出错。同样客户端也得做相应改造。

2278

AI气象预报:数值模式融合与短临预警的工程实践

气象预报正经历从物理推演到数据驱动的认知范式转变。AI气象预报并非替代传统数值模式,而是通过数值模式融合弥补其在参数化误差、初值敏感性和计算效率上的固有瓶颈。其技术价值在于提升短临预警时效性与空间精度,支撑航空调度、电力调控、防洪应急等关键场景。实践中需兼顾物理一致性、可解释性与业务系统兼容性,避免纯黑箱建模带来的外推失效与不确定性缺失风险。本文聚焦AI作为超分辨率引擎、误差矫正器和短临加速器的三类落地路径,解析HEALPix投影、多尺度图建模、轻量级U-Net等核心适配方法。

weixin_28221501的博客 298

.NET Socket通信

【代码】.NET Socket通信。

Kaizen的博客 1897

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1873

Apache Flink集成HDFS报错Failed to create checkpoint storage at checkpoint coordinator side.

在网上查询相关资料后,在flink的lib目录添加flink-shaded-hadoop-3-3.1.1.7.0.3.0-79-7.0.jar、commons-cli-1.5.0.jar两个包,但报错依旧存在,添加了export HADOOP_CLASSPATH=后面发现是hadoop与flink的兼容性问题,hadoop原先使用的是3.3.4,与多个版本的flink集成都会出现报错,最后将Hadoop的版本改成3.1.3,使用flink run运行jar包就没有这个错误了,在hdfs上成功保存了检查点。

zywenmag的博客 623

.NET中实现Socket编程

需要注意的是,在.NET中还有其他一些相关的类和方法,例如TcpListener、UdpClient、SocketAsyncEventArgs等,可以更加灵活地实现Socket编程。同时,在使用Socket编程时需要注意线程安全性和异常处理等问题。在.NET中,可以使用System.Net.Sockets命名空间中的类来实现Socket编程。其中,最基本的类是Socket类,它提供了创建网络连接、发送和接收数据等功能。

qq_51016969的博客 967

vivado生成及调用自定义IP的方法

开发环境:vivado 2018.2 1.将整个工程封装为自定义IP 将整个工程封装为自定义IP主要有以下步骤: 步骤1.选中工程中的top模块。点击Tools ------> Create and Package New IP,如图1所示 图1 步骤2.弹出界面后,点击next至图2界面,选择Package your current project,然后继续点击next 图2 步骤3.选择生成的IP路径,如图3所示。这个路径就是后续添加该IP的路径 图3 步骤4.继续点击next,然后选择fi

进击的阿日比 4726

.net socket 通信

服务端需要socket 中的Bind(),Listen();客户端需要socket 中的Connect();最近接触到socket,这个和通信有关 ,比如客户端和服务端 俩个之间交流信息就会用到。那么socket 是如何实现通信的呢?

瓜皮弟子头很铁的博客 1149

通信原理期末考试试题及答案

五、(总分12分)设某信道具有均匀的的双边噪声功率谱密度在该信道中传输抑制载波的单边带(上边带)信号,并设调制信号m(t)的频带限制在5K HZ,而载波为100 K HZ,已调信号的功率为10KW。:(1)单边带信号的载频为100kHz,带宽B=5kHz,为使信号顺利通过,理想带通滤波器的中心频率为。8、对最高频率为fH的调制信号m(t)分别进行AM、DSB、SSB调制,相应已调信号的带宽分别为。7、设调制信号为f(t)载波为,则抑制载波双边带调幅信号的时域表达式为,频域表达式为。

qq_67692062的博客 2392

RK3588 部署 YOLO26-Pose 人体姿态检测:Windows Docker 环境全流程

YOLO26-Pose 在 RK3588 上的部署流程是 PC 端 ONNX 导出 → RKNN 转换(INT8 量化)→ 板端推理。INT8 量化后 YOLO26s-Pose 约 35ms,YOLO26n-Pose 约 15ms,可以覆盖实时姿态检测的需求。后处理是 Python 实现的常见瓶颈——如果帧率不达标,先用 npy 保存模型输出在 PC 上验证解析逻辑的正确性,确认无误后再迁移到 C++ 实现。

m0_64661770的博客 542

【.net socket 网络服务框架】

1.他是一个可以快速上手开发网络服务的框。你可以创建客户端,服务器。默认实现了一个简单的协议有数据包头,包尾消息编号,简单的校验,消息编号。系统根据协议解析消息出来编号,然后根据消息编号找到对应的消息处理方法。创建大量创建大量对象,是一件比较费劲的事情,有的时候还必须解决创建对象的依赖,因此框架 自 带了一个小的 容用来帮助开发者解决创建对象的一写问题。支持单例和瞬时生命周期创建对象;支持单接口多实现;支持属性注入;

weixin_45394846的博客 1381

【原创】汇川H5U PLC控制伺服的方法

6、在线调试-进入伺服调试,可以在本软件上进行调试,可以实现原点回归、正向点动、反向电动、使能(这里使能打开时触摸屏上的使能不能打开,会冲突)、复位、停止(如下图所示)。5、在原点返回设置中一般情况下对原点信号、正限位、负限位、原点返回方向、原点返回方式进行设置,其他设置默认不改(如下图所示)。3、在单位换算设置上只需要修改脉冲数和移动量(根据伺服配套导轨上名牌进行设置),其他设置默认不改(如下图所示)。11、双击后右边出现编辑框 在上半部分定义变量(IN、INOUT、OUT、VAR)(如下图所示)。

Qinmingyue13的博客 6662

使用vb.net开发简单的socket通信

使用vb.net开发简单的socket通信(环境是visual stdio 2019)说明参考文章实现功能 说明 之前用vb6编程时都是用的winsock控件进行网络通信,现在研究.net平台发现网上说socket更好用,不过在网上一直都没有找到合适的代码,下面我来详细讲解下我的方法(小白一枚,望大佬指出不足!!!) 参考文章 C#实现socket通信:https://www.cnblogs.com/liangweitao/p/10862611.html vb.net检测端口是否被占用 https://b

childdzx的博客 7096

YOLOv8/v9实战:从零搭建智慧零售货架管理系统(附完整可运行代码)

摘要:本文基于YOLOv8/v9目标检测算法,详细讲解智慧零售货架管理系统的开发流程,解决传统人工巡检效率低、漏检率高的问题。内容涵盖环境配置、商品检测、陈列分析、价格标签验证等核心功能实现,提供可运行代码及零售专用数据集训练方法。系统支持实时货架状态监控、缺货预警与数据分析,帮助零售企业降低运营成本30%以上。 关键词:YOLOv8、YOLOv9、智慧零售、货架管理、商品检测 标签:YOLOv8、YOLOv9、目标检测、零售AI、Python

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1309

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

.net3.5下的Socket通信框架

<br />本文版权归博客园 李占卫所有,转载请按如下方式标明出处,以示尊重!!<br />作者:李占卫<br />原文:http://www.cnblogs.com/tommyli/archive/2009/07/10/1520586.html<br />1:前言<br />写博客时间不短了但是一直不知道怎么开头。索性就开门见山吧。<br />这篇文章主要给大家介绍.net3.5下的Socket通信,主要从事件池,缓冲区以及协议三个方面给大家阐述。最后附上个我调试通过的项目。怎么说那?还是来个目录吧<br

优秀技术文章收录 3118

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

flex与.Net的socket通信

PS:以下的代码是转载的。 新版的flash很爽一点就是增加了对socket的支持,这意味着可以通过flash进行高性能的网络通信,例如做flash网游:)既然flash支持,那么flex也不会例外。像flex这样的RIA正正更需要这种有效的网络通信能力来实现各种功能。首先是一个.Net的服务器程序示例:using System;using System.IO;using System.Net;u

zwywilliam的专栏 2678

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

vb.net的socket通信

<br />private sub ClientThread(ByVal clientParam as object)<br /> <br /> <br />dim param as clientThreadParam<br />param=CType(clientParam,ClientThreadParam)<br />dim isAuthorizedClient as boolean=false<br />dim bytes(MaxBufferSize-1) as byte<br />dim recv

zhuxh123的专栏 1706

一步一步教你使用.net进行Socket通信

10、 下面我们另外启动一个VS.NET2003实例,建立一个项目SocketClientTest,并通过添加已存在的项目增加SocketLibrary,增加对此项目的引用。好了,现在我们的客户端已经连接上服务器,并可以发送消息了。但我们并没有看到监听启动。这是由于我们的监听是在另外一个线程里运行的。下一章我们继续讲如何重构这一章的代码,并继续深入的讲如何定义协议以及如何使用这些协议收发消息。在SocketServerTest的Form1的Form1_Load事件中加入如下代码。

biyusr的专栏 1311

基于.NET Socket API 通信的综合应用

闲谈一下,最近和客户进行对接Scoket 本地的程序作为请求方以及接受方,对接Scoket 的难度实在比较大,因为涉及到响应方返回的报文的不一致性,对于返回的报文的格式我需要做反序列化的难度增大了不少,下面我就谈谈如果基于进行对接Scoket API 的接口的。方便大家,节省时间,少走弯路。大大的提高自己的开发的效率,当然我介绍的只是基于.NET Scoket API 的应用。  一.Scoke

ccc82284的博客 365

最完整的.NET Core Socket通信指南:从入门到实战

在网络编程中,Socket(套接字)是实现跨设备通信的基础组件。你是否还在为如何在.NET Core中构建稳定的Socket通信应用而烦恼?本文将从基本概念到完整示例,带你掌握.NET Core中的Socket编程技术,解决连接不稳定、数据传输异常等常见问题。读完本文,你将能够: - 理解Socket通信的基本原理 - 掌握.NET Core中Socket API的使用方法 - 构建可靠的TCP/...

gitblog_00684的博客 779

利用socket实现vc++与.NET进程间的通信

  由于项目需要,这两天在实现两个进程间的通信。以前乙方是用共享内存的方法实现。我的系统是基于.NET Framework环境的开发的,在托管环境下共享内存显得很麻烦。于是采用socket进行通信。   简单的研究了winsock库的套接字模式,对I/O模型有了一定的认识。觉得直接用winsock库没有必要,比较麻烦,因为不但要自己明白,还得让乙方明白。看了一个用MFCCAsyncSo

doncai的专栏 1170
上一篇: 【Http】HTTP方法的安全性和幂等性
下一篇: 【.NET】线程的暂停和挂起
It_sharp
博客等级 码龄10年 51粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值