精易论坛
标题: TCP粘包问题dome,有好多问题,那个大佬能完善一下 [打印本页]
作者: 408089597 时间: 2023-7-17 22:15
标题: TCP粘包问题dome,有好多问题,那个大佬能完善一下
今天遇到了TCP粘包问题,想了一下就写了一个dome,但是写的时候发现有好多问题,
现基本粘包已经解决,那个大佬能完善一下,或者发一个例子
-
1.png
(44.41 KB, 下载次数: 0)
-
-
服务器.e
895.86 KB, 下载次数: 19, 下载积分: 精币 -2 枚
-
-
客户.e
2.72 KB, 下载次数: 23, 下载积分: 精币 -2 枚
作者: 1051130978 时间: 2023-7-17 22:59
别用官方支持库,用hp_socket
作者: 408089597 时间: 2023-7-17 23:26
现在就是我想怎么不用现在一直循环处理的情况下,怎么可以在数据不完整的时候阻塞连接一直等待数据发过来! 不然我这样岂不是一千个连接就是一千个线程?,其实还一个一个办法,就是每一个连接申请一个内存,当数据过来的时候吧数据纯在内存,并且处理一下数据,数据不够的就先放在内存里边等待再次有数据过来然后合并处理,连接断开的时候释放内存
作者: 396384183 时间: 2023-7-18 00:02
感谢分享
作者: 408089597 时间: 2023-7-18 00:10
刚想到一个思路去掉线程,简单测试不丢包,不粘包,但是懒得写线程取处理以及共享资源安全了
-
2.png
(56.94 KB, 下载次数: 0)
-
-
服务器.e
134.05 KB, 下载次数: 1, 下载积分: 精币 -2 枚
作者: 遗失的眼泪 时间: 2023-7-18 00:33
这个时候我要说一句 hp_socket 天下第一
易语言的组件长年不更新,没必要用它们了(UI组件除外)
作者: Svlik 时间: 2023-7-18 01:34
HP挺不错的 但是有个大问题。就是如果你使用HP库 其他的平台 如PHP HTML 使用 原生库 就无法连接。
作者: pipicool 时间: 2023-7-18 04:00
学习一下
作者: xo37 时间: 2023-7-18 08:31
dome or demo?
作者: 一指温柔 时间: 2023-7-18 08:34
谢谢分享
作者: wuqingg 时间: 2023-7-18 08:48
早~~~~~~~~~~~~~~~·
作者: 亿万 时间: 2023-7-18 21:42
谢谢分享
作者: bianyuan456 时间: 2023-7-20 09:55
已经顶贴,感谢您对论坛的支持!
作者: qmxun 时间: 2023-7-20 11:01
你这是自己发自己收,如果是别的软件发你收出现粘包怎么整
作者: 408089597 时间: 2023-7-20 11:44
一般都指的是自己的客户Duan和服务端,如果真有需求要收别的客户Duan发的数据,发生粘包,就抓一下包,看一下他的格式是什么取修改服务端了。
作者: accet 时间: 2023-7-20 16:39
直接用ETCP打开配套模式就行了 不需要自己处理了 HPPack模式也是一样.
作者: accet 时间: 2023-7-20 16:43
用正常模式就行了. 或是 PULL模式就行了.
PACK模式 那是在TCP上重新定义自己的一套。 当然需要两边都是PACK模式了.
作者: Svlik 时间: 2023-7-20 19:20
PULL模式是不是需要自己分包?
作者: accet 时间: 2023-7-21 04:06
当是需要自己分包.
PULL模式是已经帮你组包了. 分包就看你的自己的了.
网络传输 各地的路由器 规则不同 自然会可能被 粘包 分包.
而且PULL线程安全. 我写的模拟器都是用PULL搞的.
PACK模式 则是不需要自己处理组包分包了 内部帮你做了 你看不到.
但是PACK模式 必需两边都是PACK.
他其实就是 比如你发送的是 0x11223344 他会帮你在网络中按 0x0400000011223344 传过去.
而对方收到后 根据 04000000知道本轮传输长度为4.就取出后面的 11223344 去回调你的HPPACK模式的接收函数 OnRecv.. Recv的参数就有 11223344 的内存地址和长度.
作者: gmkk2e 时间: 2023-7-21 14:40
所有的都会处理粘包情况
作者: 曽祥冠 时间: 2023-7-22 01:58
别用自带的服务端组件和客户Duan组件了,改用API创建或者用HP吧,自带的服务端组件不好分类客户机,就算写好了客户分类也会影响到效率,看了你写的服务端代码,接收数据函数里面开始几行竟然有多线程通行证?先不说你能不能同时接收上千上万个客户Duan链接的数据接收,10个客户Duan的数据接收都慢的要死,因为你在最关键的地方使用了通行证。建议你改用API创建或者用HP吧,或者随便在论坛下载个API创建带粘包处理的代码都比你这强啊
作者: 408089597 时间: 2023-7-22 13:03
是的,我这只是随便写的一个demo,根本没有考虑这些
作者: shuya1 时间: 2023-8-4 01:35
支持开源~!感谢分享
作者: senyu239 时间: 2024-7-28 01:07
感谢分享,很给力!~
作者: JYYeah 时间: 2025-2-10 22:08
感谢分享,很给力!~
作者: shuya1 时间: 2025-4-19 09:48
支持开源~!感谢分享
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |