【.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

商店销售预测(回归&随机森林)

通过准备线性回归的数据,我们发现了一些有趣的见解,包括周末的销售增长,公共部门支付工资时的销售增长,以及11月和12月的销售增长。如果我们选择包括这些,我们可能会得到更好的结果,但在这个时候,我们不会用它来做任何预测,而是将转向另一种可能给我们更好的结果的技术。在Kaggle竞赛中,要求我们应用时间序列预测,根据厄瓜多尔大型杂货零售商Corporación Favorita的数据预测商店销售情况,建立一个模型,准确地预测在不同商店销售的商品的单位销量。在快速查看我们的训练数据集之后,我们可以看到有很多零。

qq_45791012的博客 4749

.NET Socket通信

【代码】.NET Socket通信。

Kaizen的博客 1897

CANoe/CANalyzer新手必看:从零配置到报文分析的完整流程(附B站官方教程实操)

本文为CANoe/CANalyzer新手提供从零配置到报文分析的完整流程指南,涵盖硬件连接、工程配置、报文捕获及信号级分析等关键步骤。通过详细的实操案例和B站官方教程,帮助工程师快速掌握汽车电子总线分析工具的核心应用,提升诊断效率与通信系统理解。

y7z8a的博客 771

期货套利策略(二)

接上一篇期货套利策略,随着对期货套利策略的深入了解,我发现套利策略不是那么好做的。下面将会讲碰到的一些问题。 上一篇文章中没有考虑滑点的问题,这里我们把滑点问题考虑进去。这里先说一些天勤api的买入点,天琴的买入点是当前K线的收盘价。碰到数据传输问题,还有计算等各方面问题,实际情况是无法在当前K线的收盘价买入的。这里我们把这方面问题考虑进去,利用api.wait_update()调到下一个k线数据...

qq_31611005的博客 1711

.NET中实现Socket编程

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

qq_51016969的博客 967

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3559

.net socket 通信

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

瓜皮弟子头很铁的博客 1149

WinCC7.5SP2生成PDF报表显示有错误或残缺的问题及解决方法

WinCC V7.5 SP2 自带的生成PDF报表功能异常。生成的PDF报表内容显示空白或有残缺。经测试后发现可以通过替换Adobe PDF Library库文件的方法解决该问题。

commandboy的博客 3658

三甲医院网络架构与安全建设实战

华为OceanStor] [华为OceanStor][PACS存储双活] [HIS数据库同步]患者隐私 数据脱敏 天清Web防火墙动态脱敏策略。主数据中心 --[OTV专线]-- 备数据中心。实现医疗业务网/卫生专网/互联网三网隔离。核心业务配置(华为CE6865)自动备份配置(每天02:00)安全事件响应(30分钟SLA)漏洞扫描(每周日00:00)实现医疗物联网统一接入管控。五、等保2.0合规关键配置。堡垒机登录(双因素认证)四、医疗物联网安全方案。

有小小的远大抱负 1911

【.net socket 网络服务框架】

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

weixin_45394846的博客 1381

Unity接入抖音小程序侧边栏

Unity接入抖音小程序侧边栏功能实践总结 本文分享了Unity游戏接入抖音小程序侧边栏复访功能的实现过程。针对官方文档不清晰的问题,作者详细介绍了关键实现步骤:通过TT.CheckScene检测侧边栏可用性,利用OnShow事件监听判断用户是否从侧边栏进入,并提供了完整的UI交互代码示例。重点功能包括:检测宿主版本支持、区分侧边栏入口与非侧边栏入口的界面展示、实现跳转侧边栏场景等。文中附有官方文档链接和效果截图,为开发者提供了实用的接入参考方案。

类人_猿的博客 613

使用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

Unity零基础到进阶 | Unity中的内存泄漏全解析,原因、排查及避免

Unity 内存泄漏并非传统C++语境中的野指针或未释放堆内存,而是基于其「托管内存(C#)+ 原生内存(引擎/非托管)」双架构的特殊问题——即已废弃、不再被业务逻辑使用的内存块,无法被引擎或系统自动回收,持续占用内存空间,最终引发内存暴涨、GC卡顿、OOM(内存溢出)崩溃,其中移动端、主机端受影响最显著。 Unity 内存主要分为三类,其中泄漏仅发生在前两类,栈内存因系统自动分配/释放,无泄漏风险:

努力前行,总会成为自己心中的那道光 1万+

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...

.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

数学建模模型总结

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

flex与.Net的socket通信

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

zwywilliam的专栏 2678

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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、付费专栏及课程。

余额充值