C#实现简单的网络通信

“保姆级别”从零开始的C#TCP网络通信教程 “保姆级别”从零开始的C#TCP网络通信教程 本文主要使用tcp协议实现网络通信,包含窗体设计以及代码实现。 阅读详情

需要使用到的命名空间有:

System.Net,System.Net.Sockets,System.Threading

l 服务器端

在服务器端,要单独用一个线程和套接字来监听客户端的连接请求

首先,准备一个要绑定的本地终结点

IPAddress address = null;

IPAddress.TryParse(本地的IP地址, out address);

IPEndPoint ep = new IPEndPoint(address, 要绑定的端口);

然后创建一个用来监听的套接字
Socket socWatcher = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

在创建套接字的三个参数中:

AddressFamily.InterNetword表示此Socket将采用的寻址协议

SocketType.Stream表示此Socket的类型,SocketType.Stream支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界。

ProtocolType.Tcp表示此Socket支持的协议为TCP协议

socWatcher.Bind(ep);//将此套接字绑定到指定的终结点

socWatcher.Listen(10);//将此套接字置于侦听状态,并设置最多同时处理的请求数为10

接着,开启一个单独的线程

Thread thrWatcher = new Thread(Watch);

thrWatcher.IsBackground = true;

thrWatcher.Start();

Watch方法用来用来监听来自客户端的请求

此方法中使用一个死循环来不断为请求创建套接字

while(true)

{

Socket socNew = socWatcher.Accept();

//处理socNew的代码

//一般讲socNew存储到一个集合中,并新建立一个线程,利用此套接字与客户端通信

}

Accept 以同步方式从侦听套接字的连接请求队列中提取第一个挂起的连接请求,然后创建并返回新的 Socket。

socNew建立起来后,可以利用此套接字与客户端进行通信

大部分的时候,利用一个新的线程使用socNew监听来自对方的信息。

socNew.Receive(字节数组,起始索引,长度,SocketFlags.None);

此方法将阻塞线程,直到接受完数据为止。

同时也可利用socNew.Send(字节数组, 起始索引, 长度, SocketFlags.None);向对方发送数据。

l 客户端:

客户端必须知道服务器端的IP地址和端口号。

和服务器端类似,首先利用此IP地址和端口号创建一个终结点,然后创建一个套接字。

然后,利用此套接字向服务器端请求建立连接:

SocClient.Connect(ep);

连接建立完毕后,客户端同样可以使用此套接字的Send方法和Receive方法进行通信了。

附上一个简单示例的源代码

C#开发的简单端口转发程序的代码 下面代码是关于C#开发的简单端口转发程序的代码。 using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; namespace portmap_net { sealed internal class state { #region Fields (5) public int _co 阅读详情

相关推荐

C# UDP网络通信的实例

UDP协议是互联网上使用最广泛的传输协议之一,具有简单、高效和不可靠的特点,本文主要介绍了C# UDP网络通信的实现示例。

StevenChen的博客 128

nanomsg使用

nanomsg是一个消息通信组件 - zeromq的作者之一用C语言重写的通信框架, 使用宽松的MIT许可开源,小、轻、快,非常方便,介绍我就不多写了,下面我具体的讲用法,用了你就知道是怎么回事。 pull/push 单向管道推送模式 push/pull套接字结合使用可实现消息队列的扇出模式, 这是一个1对多的模式,服务端不能有多个,但客户端可以多个。 官网上给的这个图是1对1的,...

章志强的专栏 2万+

C# 通过GPRS模块远程通讯的服务端

基于C#开发的socket服务端,能接受远程智能设备通过gprs传送过来的数据

C# Socket通讯连接测试

Socket通讯运行情况分为两种: 客户端和服务器端同时运行在一台电脑上,这种情况下客户端和服务器端的ip地址得需要是建立在如:127.0.0.1的环网上,端口号建议设置为3000以上,否则设置的IP地址是无效的。 这种情况是客户端和服务器端分别运行在不同的电脑上:将网线连接上两台电脑,接着需要完成的是本地ip的设置,例如服务器的本地IP设置为192.168.1.20,那么本地的IP地址就是服...

云大圣_的博客 1441

uds协议之can总线程序升级

uds协议简介 如何利用uds协议升级 升级流程 uds服务类型介绍

fangye945a的博客 1万+

VINS技术路线与代码详解

VINS技术路线 写在前面:本文整和自己的思路,希望对学习VINS或者VIO的同学有所帮助,如果你觉得文章写的对你的理解有一点帮助,可以推荐给周围的小伙伴们,当然,如果你有任何问题想要交流,欢迎随时探讨。话不多说,下面上正文。 VINS代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono 参考文档:1.VINS-Mono A R...

wangshuailpp的博客 7万+

【深入浅出C#】章节 8: 网络编程和远程通信:网络编程和远程通信

Socket(套接字)是计算机网络编程中的一个抽象概念,用于在网络中实现进程之间的通信。它提供了一种统一的接口,使得应用程序可以通过网络发送和接收数据。在程序中创建一个套接字,可以是客户端套接字用于发起连接,也可以是服务器套接字用于监听连接。为套接字指定本地地址和端口,用于标识唯一的网络节点,服务器需要绑定一个特定的端口。服务器套接字可以进入监听状态,等待客户端的连接请求。当有客户端请求连接时,服务器套接字会接受连接请求,建立一个新的套接字用于与客户端通信。

喵叔 1426

基于ESP32-S3与PCM5102的HiFi网络收音机复刻指南:从硬件设计到软件配置

本文提供了一份详细的基于ESP32-S3与PCM5102的HiFi网络收音机复刻指南。内容涵盖从核心硬件选型(如ESP32-S3主控与PCM5102 DAC芯片)、四路独立LDO供电设计,到软件环境配置、固件烧录及常见问题调试的全过程,旨在帮助创客打造一台支持网络电台、本地播放与蓝牙连接的高保真音频播放器。

weixin_30632267的博客 186

C#培训2019-11-15 Socket 实现两个应用之间通信(相同/不同主机之间)

Socket利用TCP/IP通信方法,实现一台主机中两个应用通信,或者多台主机中应用的通信。 引用using System.Net.Sockets; using System.Net; 1、Server端设置:Server端主要是用来监听Client端是否有连接的。范例代码如下: using System; using System.Collections.Generic; using Syste...

余山 1033

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 765

等保测评-达梦数据库

一般适用于等保测评

m0_54146694的博客 1297

C#实现UDP通信

1、关键类:2、实例化一个对象;3、使用建立与远程对象的连接;4、开一个异步新任务发送数据;5、主进程接收数据;

rwo_bear的博客 3441

MSP430FR6043超声波传感器设计记录

1.前言 最近项目设计了一个超声波传感器 参考TI官方的板子EVM430-FR6043搭建的电路 EVM430-FR6043评估模块是一个用于评估MSP430FR6043 MCU性能的开发平台。 MSP430FR6043 MCU是一款超低功耗器件, 集成了超声波感测模拟前端 用于精确地进行超声波测量。 专为超声波水表、热量计和燃气表而设计, MSP430FR6043 器件采用低功耗加速器 (LEA), 可实现基于高速 ADC 的信号采集以及后续优化数字信号处理, 为电池供电型计量提供了一款超低功耗、高

bingdund的博客 2870

使用vs简单实现socket网络通信

使用vs简单实现socket网络通信 最近一直在学习.Net,刚把winform基础学习完,这次算是一个学习小结,觉得这个socket的蛮有意思的,就认真自己就完成了一遍,能简单的发送消息,传送文件。窗体控件我就不一一说明了,下面直接上代码 sever端代码 using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; usi

qq_41050616的博客 4179

盲孔、埋孔、通孔、一阶HDI、二阶HDI概念

文章目录1. 盲孔和埋孔2. 一阶、二阶HDI3. PADS软件设置盲埋孔 1. 盲孔和埋孔 HDI板是高密度互连(High Density Interconnector)的缩写,是生产印制板的一种技术,使用微盲埋孔技术的一种线路分布密度比较高的电路板,也被称为盲埋孔板,下图就是一个6层HDI板,其中C和D就是盲孔,B是埋孔,A是通孔。 盲孔(Blind Via)指连接外层到内层的金属化孔,D是V13孔,连接顶层和第3层,C是V56孔,连接第5层和底层。 埋孔(Buried Via)指连接内层到内层的金属

记得诚 3万+

AutoSAR系列讲解(入门篇)2.4-Runnables可运行实体

讲解一下Runnable和其工程的实际映射

雪云飞星的博客 3万+

应用HslCommunication C# 网络通信

C# 网络通信功能 同步数据交互开发 前言 本文将使用一个Nuget公开的组件技术来实现一对多的数据通信功能,提供了一些简单的API,来方便的向服务器进行数据请求。 在visual studio 中的Nuget管理器中可以下载安装,也可以直接在Nuget控制台输入下面的指令安装: 1 Install-Package HslCommunication Nuget安装教程 http://www.cn...

星河队长 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Unity中C#网络通信和下载保存

开发环境 Window7 Unity3D  3.4.1 VS2010 MB525defy Android 2.2.1         羽化的第十五篇博客,这一星期蹭了杰哥和伍哥两顿饭有点不好意思,日后一定请回来-0- 杨和家人去了内蒙做生意,从此告别代码,人生轨迹真是难以估计啊,回想年初来公司的时候,和他一起做游戏Demo基本上就是羽化第一次接触游戏制作,从中学习到不少东西,大家年龄相仿

GARDEN OF EVERYTHING 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

PLC通过TCP/IP协议通信实例C源码:让PLC网络通信更简单

PLC通过TCP/IP协议通信实例C#源码:让PLC网络通信更简单 去发现同类优质开源项目:https://gitcode.com/ PLC通过TCP/IP协议通信实例C#源码,实现了PLC与计算机间的网络通信。 项目介绍 在现代自动化控制系统中,PLC(Programmable Logic Controller,可编程逻辑控制器)的应用越来越广泛。为了实现PLC与计算机之间的数据交互,TCP/I...

gitblog_06797的博客 816

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

wpf网络通信聊天小程序(c#源码)

这个聊天程序是networkcomms2.3.1通信框架中自带的示例程序,由C# 语言编写,采用wpf技术 程序界面如下: 打开2个实例,其中一个 Enable Local Server 当做服务器,另一个作为客户端,聊天通信. 通讯框架c#编写的networkcomms2.3.1开源通...

chvft44866的专栏 979

C#中简单Socket编程

Socket编程是网络编程的基础,通过Socket编程,可以实现计算机之间的通信。本文将介绍如何在C#中进行简单的Socket编程,包括服务器端和客户端的实现。示例将展示TCP连接的基本操作,适用于理解网络通信的基本概念和实现方法。确保您的开发环境中安装了.NET SDK,可以通过Visual Studio或其他C#开发工具进行编码和调试。服务器需要监听特定端口,接受客户端连接,并进行数据收发。客户端需要连接服务器并发送数据。

foundbug999的博客 353

使用DotNetty编写跨平台网络通信程序

长久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架。终于微软的Azure团队,使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口。让我们在使用时,完全可以依照Netty官方的教程来学习和使用DotNetty应用程序。 DotNetty同时也是开源的,它的源代码托管在Github上:ht

dotNET跨平台 857

C#实现一个简单的IOCP模式的服务端监听框架

本类直接继承了SocketAsyncEventArgs,重写其内部的OnCompleted方法来处理客户端连接。 只是一个基础的监听框架,具体的业务逻辑需要在子类实现NewClient方法 后续其 using System; using System.Net; using System.Net.Sockets; using System.Threading; namespace Socks5.Server { /// <summary> /// 直接继承SocketAsyncE

艾恩 2311

C#开源网络通信库PESocket的使用

PESocket PESocket开源项目GitHub地址:点击跳转 基于C#语言实现的高效便捷网络库。支持集成到Unity当中使用。 不用过多了解网络通信内部原理,只需几行简单的代码,便能简捷快速开发基于C#语言的服务器和客户端,实现网络通信。 使用示意: 1.创建Socket服务器 PESocket<ClientSession, NetMsg> client = new PESoc...

weixin_30772105的博客 627

【C#】Socket客户端与服务器的简单通信

客户端代码 using System; using System.Net; // 获取网络信息相关数据使用 using System.Net.Sockets; // 定义Socket类的时候使用 using System.Text; // 数据转换的时候使用 namespace Client { class MainClass { public static void Main (

Zok93 1万+
上一篇: 常用SQL语句整理(二)
下一篇: ADO.NET的一点总结
lcprogram
博客等级 码龄15年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值