C#socket编程_TCPunity聊天室.03

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

TCPlistener和TCPclient

这里说一下socket编程中的两个类TCPlistener和TCPclient,其中listener顾名思义就是监听,是服务器端用的类,TCPclient是客户端用的类,这两个类把socket封装好,当需要传输时可以直接调用,不需要重新定义socket。用listener和client步骤也是差不多,直接上代码:

//1.创建TcpListen对socket进行了一层封装,这个类里面自己会去创建socket对象
TcpListener listener=new TcpListener(IPAdrress.Parse("192.xxx.xxx.x"),8888);

//2.开始监听
listener.Start();

//3.等待客户端连接
TcpClient client=listener.AcceptTcpClient();

//4.取得客户端的数据流
NetworkStream stream=client.GetStream();//得到了一个网络流,从这个网络流读取数据

byte[] data=new byte[1024];
while(true)
{
//0表示从数组的哪个索引开始存放数据
              //1024表示最大读取的字节数
int lentgth=stream.Read(data,0,1024);
string message=Endcoding.UTF8.GetString(data,0,length);
Console.WriteLine("收到消息为:"+message);
}
//接受完关闭要释放资源
stream.Close();
client.Close();
listener.Close();
Console.ReadKey();

接着是客户端代码,首先要注意TCPlistener和TCPClient定义时是不一样的

////当我们创建tcpclient对象的时候,就会跟server去建立连接
TcpClient client = new TcpClient("192.168.101.6",7788);

 NetworkStream stream = client.GetStream();
  while(true)
            {
                string message = Console.ReadLine();
                byte[] data = Encoding.UTF8.GetBytes(message);

                stream.Write(data, 0, data.Length);
            }
            stream.Close();
            client.Close();
            Console.ReadKey();

显然,用这两个类写通讯会方便很多,但TCP协议有时候缺不能满足需求,接着会说下另一个用的多的协议UDP,UDP协议速度快,占用少,但是不可靠容易丢包,UDP不需要建立连接,也没有服务端和客户端之分,所以UDP只有UdpClient类。

                                                未完待续
一套完整的unity的socket网络通信模块 这里只讲一些主要内容,完整代码请到我的github里下载:https://github.com/LiuFeng1011/UnityNetWork/tree/master/Assets/Code/Net SocketHelper类 主要的通信类,socket的管理放在这里 下面说一下一些主要的方法 1.连接服务器,这个都写了比较详细的注释,一看就会明白 /// 阅读详情

相关推荐

Unity3D入门二:Socket初探

这几天研究了下Socket交互。     通过网上的资料做了有关Socket的第一个Demo,虽然不是很成熟,但个人感觉已经相对比较完整了。各类型数据的传输接受都有,其中也做了float类型的(因为我感觉做Unity应该用的着)。     功能方面,为了测试多用户交互,我在Demo上开启了4个Socket 4个线程接受数据。实现了服务端通知用户进入 离开功能。     真机上,需要加上字库,

1万+

Unity3D —— Socket通信(C#)

前言:         在开始编写代码之前,我们首先需要明确:联网方式、联网步骤、数据收发以及协议数据格式         当然在设计时也应该减低代码的耦合性,尽量使得网络层可以在其他地方进行复用,这就需要我们进行接口式的开发。我们这里使用的通信模式是Socket强连接的通信方式,并且使用C#作为编程语言,其实与.NET的Socket通信是一致的。   一、设计思想:         为...

linshuhe1的专栏 6万+

简单的基于Unity3D的Socket通讯

简单的基于Unity的客户端连接服务器端,相互发送一次数据,文档描述位于http://blog.sina.com.cn/s/blog_1322690230102y3l4.html

unity3D中使用Socket进行数据通信(三)

今天跟大家继续学习下socket,由于最近有个招标参数需要给之前的一款产品做教师端以及后台数据库部分,忙了将近两个礼拜,今天刚发布了,就继续我们的socket通信部分。          之前服务端一直在VS中去做,考虑到后面客户端与服务器一体化,就把服务端也在unity中实现了,需要注意的一点是,由于服务端中包含阻塞方法,而unity所有脚本都只在仅存的一个主线程中运行,所以如果直接在star

老李与代码二三事 2万+

C#socket编程_TCPunity聊天室.02

上篇写完服务端的代码,可以接收一条数据,其实只要在原代码上加个线程,线程里加个死循环,一直接收数据,当socket断开后再跳出即可,接下来写客户端的代码,客户端代码也是差不多,1.创建socket,2.连接服务端,3.接收发送消息 首先在unity上搭建聊天室框架,这里用到了NGUI插件,不过聊天室界面怎么搭都可以,直接上代码: public string ipaddress = "192...

labylei的博客 208

C#socket编程_TCPunity聊天室.01

此仅供自己学习 首先来熟悉下C#如何写服务器端和客户端的接收发送 在C#网络编程中,主要通过Socket类来创建链接,创建简单的消息接收和发送主要步骤分四步:创建socket,绑定IP和端口,监听连接,发送消息。具体看代码: //1.创建socket,实例化时第一个参数是内网,第二个是用什么通信,第三个是用什么协议 Socket tcpServer=new Socket(AddressFamily...

labylei的博客 239

unity开发:TCP socket网络连接

unity内部封装了一个很高层次的网络接口,不过有时候并不需要那么复杂的功能,只是想实现简单的TCP网络连接,可以在unity里面用C#写tcp socket。 以下TCP连接是同步模式。 建立两个unity工程,编写脚本。 服务端 using UnityEngine; using System.Collections; //引入库 using System.Net; us

踏莎行的博客 1万+

unity3D中使用Socket进行数据通信(一)

今年3D产品的工作中心主要集中在提高产品深度上,通过对竞争产品的分析,发现我们的缺陷在于多人在线与后台管理部分,多人在线使用unity自带的Network可以搞定,后台部分前段时间主要研究了下Sqlite。由于sqlite本身不带服务器,作为数据库只是一个文件,sqlite放在服务器上与客户端通信的需求其实就是多个客户端访问同一个文件了,查了一些资料,有很多方法,个人感觉socket不错,一来应用...

一个默默的游戏制作者...... 4万+

Unity几种socket通信协议比较

引言 做Unity项目 使用C#的Socket与服务器进行通信时,消息的解析有多种方案,比如protobuffer、Marshal、或BindaryReader/BindaryWriter等,但各有优缺点,再考虑到加/解密、压缩与解压缩、跨平台,最终还要考虑性能,其实最合适的方案只有一个。 Socket的处理 C#提供了两种方式的连接、收发数据的方式,一种是同步...

ttmice的专栏 3187

Socket编程(TCP简单案例)

服务器端 using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine; using Utils; public class TCPServer : MonoBehaviour ...

代码黑洞 8485

UnityReference阅读笔记

UnityCsReference 是 Unity 引擎的 C# 源码仓库,涵盖公开 API、绑定层、编辑器工具及部分托管实现,但不包含核心 C++ 逻辑。其价值在于揭示 C# 与 C++ 的交互机制:通过 extern、FreeFunction 等绑定技术,实现参数封送与跨层调用。

lastXuanGod的博客 271

Keywords

编译器把 class 当成关键字,不是变量名,编译报错。如果关键字使用位置不对,违背语法规则,编译器无法解析代码,就输出编译错误,程序无法生成。这些单词被称为关键字,它们提供具体语法,编译器依靠这套语法来解析程序员编写的表达式。如果删掉关键字,编译器就无法分辨代码结构,直接编译报错。关键字不是随便写在代码任意地方的,只能用在语法规定的位置。编译器依靠关键字识别代码结构,分辨哪里是类、哪里是判断语句。注意:issue 在这里不是名词 “问题”,是动词:输出、发出。,就能识别类、静态方法的代码结构。

龙山大佛爷的博客 141

如何用 C# 读取 Word 中的表格数据

本文介绍使用 Free Spire.Doc for .NET 在 C# 中高效提取 Word 表格数据的轻量方案。

Jazz_z的博客 201

基于C#+MySQL实现(WinForm)个人信息管理系统

用户可以在这里查询课程的给分情况来选择适合自己的课程,查看自己的课程成绩和学分情况,也可以方便地预约图书馆的座位、给校园网充值,增加了用户体验。基本事件流:学生进入课程表页面,点击添加按钮,选择自动导入或手动添加课程,即可在课程表界面按星期查看本学期所有课程,包括课程名、上课地点、上课时间。功能概述:使用学号、学期查询课程及学分,得到学生的某学期的所有课程学分和总学分及该学期的学分学费。功能概述:使用学号、学期查询成绩表,得到学生的某学期的所有成绩,将成绩以成绩单的形式在界面展示,不及格的成绩标注。

神仙别闹的自留地 458

使用C#代码为新创建的 Word 文档创建目录

在 Word 文档中创建表格目录,可以帮助读者快速了解文档中的表格信息,并根据题注定位相应内容。通过为表格添加统一的题注格式,再设置目录字段,即可将这些表格题注集中显示在目录中。本文介绍了如何在 C# 项目中创建 Word 文档、添加表格及表格题注,并根据题注生成表格目录。完成文档内容设置后,通过更新目录可以使其与文档中的表格内容保持同步,最后将生成的文档保存为 DOCX 文件。这种方式适用于包含多个表格的报告、说明文档等场景,也可以根据实际需求调整表格数量、题注内容以及目录的显示方式。

2501_93070778的博客 233

使用 C# 轻松管理 PDF 文件的用户权限

通过,开发者可以以面向对象的方式清晰管理 PDF 的加密和权限。只需几行代码,即可灵活控制打印、复制、修改等操作,满足企业文档安全需求。这种方案代码可读性强,易于维护,是处理 PDF 权限控制的推荐实践。

afjkdajs的博客 134

C#:HashSet<T> 去重

HashSet<T> 底层基于哈希表实现,去重依赖 `GetHashCode()` 和 `Equals()` 两个方法。* 性能优化:`Add()` 返回 bool 值,直接利用返回值判断是否为新元素,避免额外调用 `Contains()` 造成二次哈希查找。// 构造函数直接去重。if (seenIds.Add(id)) // Add 返回 true 表示是新元素,false 表示已存在。3. 契约约束:若 `Equals()` 返回 true,`GetHashCode()` 必须返回相同值;

chinalog的专栏 277

Java 拆分 Word 文档教程:按页、分页符和分节符拆分

在文档处理场景中,将一个 Word 文件拆分成多个独立文档是一项常见需求。例如,生成单独的章节文件、提取指定页面内容,或将大型报告按结构拆分保存,都需要对原始文档进行精准分割。Java 提供了多种方式处理 Word 文档拆分操作,可以根据不同需求选择合适的拆分依据:按页拆分能够保留文档的页面布局,按分页符拆分适用于人工设置的内容分隔,而按分节符拆分则更适合处理具有章节结构的复杂文档。

SunnyDays1011的博客 162

C# 实现 Excel 与 Markdown 双向转换教程(基于 Spire.XLS)

转换后表格格式错乱:确保源文件为标准 Markdown/Excel 表格格式,去除合并单元格、特殊嵌套格式。提示文件无法加载:检查文件路径是否正确、文件是否被占用、文件格式是否合规。内存占用过高:必须执行Dispose()释放资源,批量转换时建议单次实例化、单次释放。借助 Spire.XLS for .NET 库,仅需少量代码即可实现 Excel 与 Markdown 的高效双向转换,无需依赖 Microsoft Office 环境,跨平台、轻量高效。

asdzx67的博客 212
上一篇: C#socket编程_TCPunity聊天室.02
薛西佛斯
博客等级 码龄7年 2粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值