社区
网络及通讯开发
帖子详情
关于客户端服务器双向通信问题
back1999
2018-03-22 07:40:28
小弟刚转做后台,现在有个问题想请教下各位大神!
客户端与服务器之间正常双向他通信,假如就是基于socket的tcp,,如果我们的模式是:客户端在每一次send之后如果都需要获取服务器的响应,另外客户端也可以接收服务器的主动推送消息。
这样的情况,大家一般是怎么处理的?是在消息头上封装一个标识,这个标识是针对每一次请求的响应吗?需要创建单独的socket,来接收主动推送呢?
...全文
789
9
打赏
收藏
关于客户端服务器双向通信问题
小弟刚转做后台,现在有个问题想请教下各位大神! 客户端与服务器之间正常双向他通信,假如就是基于socket的tcp,,如果我们的模式是:客户端在每一次send之后如果都需要获取服务器的响应,另外客户端也可以接收服务器的主动推送消息。 这样的情况,大家一般是怎么处理的?是在消息头上封装一个标识,这个标识是针对每一次请求的响应吗?需要创建单独的socket,来接收主动推送呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhgwbzhd
2018-04-18
打赏
举报
回复
TCP协议吧,可考虑使用Indy控件。 当然如果采用UDP也可以,就是自己多处理一点,发现发出消息,没有应答,那就再发消息即可,直到有应答。
ooolinux
2018-04-17
打赏
举报
回复
如果收到一个先导字符串,接下来马上接收数据的话,对方发送先导字符串时可以把要发送数据的长度信息编码进去。 这里有一个问题,就是在一个发送、接收流程未处理完的时候,客户端有新的操作请求,简单一点处理这个请求命令字符串可以放在队列里延迟发送,直到一个流程结束才发送。 我考虑的这个比较简单,实用的应该比较复杂,其实可以参考一下木马的源代码,了解一下它的流程处理。
ooolinux
2018-04-17
打赏
举报
回复
比如服务器响应的消息,是发送一个字符串“serverResponse”,主动推送的消息,是发送一个字符串“serverPush”。 客户端用一个线程同样接收处理就是了,比如收到“serverResponse”,发送“readyForServerResponse”,服务器收到就发送具体的数据,客户端接收数据。 客户端收到“serverPush”也是类似,反正就是一来一去发送接收,都是用自定义的一个字符串作为先导。 个人觉得比较麻烦的是,假如连接中断、恢复连接的时候,怎样从中断的流程恢复。或者重新连接的时候,从头开始一个流程,像第一次连接时一样。
back1999
2018-04-17
打赏
举报
回复
引用 5 楼 BCBPLC 的回复:
要定义好服客间的对话协议格式。
这个行吗? 我客户端既要接收主推的消息,也要接收请求响应的消息。 那么接收主推肯定是要单独的线程或者异步来做,接收请求响应的消息要用同步来做,如果不开多个socket的话,怎么实现多线程来同时操作同一个socket的数据呢。。。 比方说我们定义了协议格式,主推线程判断不是主推的,但是这时候接收请求响应线程已经没有办法recv到这个数据了啊
BCBPLC
2018-04-12
打赏
举报
回复
要定义好服客间的对话协议格式。
日立奔腾浪潮微软松下联想
2018-03-26
打赏
举报
回复
这个只是比较方便命令/响应类型的应用,用一般TCP Client/Server也一样做。
back1999
2018-03-25
打赏
举报
回复
引用 2 楼 DelphiGuy 的回复:
考虑使用TIdCmdTCPServer、TIdCmdTCPClient
基于什么原因呢?
日立奔腾浪潮微软松下联想
2018-03-22
打赏
举报
回复
考虑使用TIdCmdTCPServer、TIdCmdTCPClient
back1999
2018-03-22
打赏
举报
回复
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
C Socket通信多线程数据双向收发实例VS2010(全部源码)
最新的C C++Socket技术总结! 开发环境:VS2010 实现功能: 1、运用多线程和Socket技术实现Socket Server端侦听多个
客户端
请求; 2、实现
服务器
端循环处理
客户端
不同请求从而实现不同测试要求,并向
客户端
循环发送数据; 3、实现
客户端
向
服务器
端发送不同测试命令,并接收
服务器
端发送的数据; 4、运用指针上下文实现不同线程的数据共享; 5、实现多个
客户端
同时连接
服务器
端; 6、
服务器
端程序和
客户端
程序可以运行在同一台计算机,也可以运行在两台计算机。 测试方法: 1、打开ServerDemo.exe 2、打开ClientDemo.exe 并输入127.0.0.1(同一台计算机)或目标机IP地址(两台计算机)
WebSocket
客户端
和服务端实例源码
WebSocket
客户端
和服务端实例源码 WebSocket ws实例 HTML5 用java实现的服务端 Websocket与
服务器
的正常通信 众所周知,Web 应用的交互过程通常是
客户端
通过浏览器发出一个请求,
服务器
端接收请求后进行处理并返回结果给
客户端
,
客户端
浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用经常面临的
问题
,比如金融证券的实时信息,Web 导航应用中的地理位置获取,社交网络的实时消息推送等。 传统的请求-响应模式的 Web 开发在处理此类业务场景时,通常采用实时通讯方案,常见的是: 轮询,原理简单易懂,就是
客户端
通过一定的时间间隔以频繁请求的方式向
服务器
发送请求,来保持
客户端
和
服务器
端的数据同步。
问题
很明显,当
客户端
以固定频率向
服务器
端发送请求时,
服务器
端的数据可能并没有更新,带来很多无谓请求,浪费带宽,效率低下。 基于 Flash,AdobeFlash 通过自己的 Socket 实现完成数据交换,再利用 Flash 暴露出相应的接口为 JavaScript 调用,从而达到实时传输目的。此方式比轮询要高效,且因为 Flash 安装率高,应用场景比较广泛,但在移动互联网终端上 Flash 的支持并不好。IOS 系统中没有 Flash 的存在,在 Android 中虽然有 Flash 的支持,但实际的使用效果差强人意,且对移动设备的硬件配置要求较高。2012 年 Adobe 官方宣布不再支持 Android4.1+系统,宣告了 Flash 在移动终端上的死亡。 从上文可以看出,传统 Web 模式在处理高并发及实时性需求的时候,会遇到难以逾越的瓶颈,我们需要一种高效节能的
双向通信
机制来保证数据的实时传输。在此背景下,基于 HTML5 规范的、有 Web TCP 之称的 WebSocket 应运而生。 早期 HTML5 并没有形成业界统一的规范,各个浏览器和应用
服务器
厂商有着各异的类似实现,如 IBM 的 MQTT,Comet 开源框架等,直到 2014 年,HTML5 在 IBM、微软、Google 等巨头的推动和协作下终于尘埃落地,正式从草案落实为实际标准规范,各个应用
服务器
及浏览器厂商逐步开始统一,在 JavaEE7 中也实现了 WebSocket 协议,从而无论是
客户端
还是服务端的 WebSocket 都已完备,读者可以查阅HTML5 规范,熟悉新的 HTML 协议规范及 WebSocket 支持。
c++高并发商业级游戏
服务器
干货【
客户端
ue4和unity3d】
1、本课程是一个干货课程,主要讲解如何封装
服务器
底层,使用Tcp/ip长连接,IDE使用vs2019 c++开发以及使用c++11的一些标准,跨平台windows和linux,
服务器
性能高效,单
服务器
压力测试上万无压力,
服务器
框架是经历过上线产品的验证,框架简单明了,不熟悉底层封装的人,半个小时就能完全掌握
服务器
框架上手写业务逻辑。2、本课程是一个底层
服务器
框架教程,主要是教会学员在windows或linux下如何封装一个高效的,避免踩坑的商业级框架,
服务器
底层使用初始化即开辟内存的技术,使用内存池,
服务器
运行期间内存不会溢出,非常稳定,同时
服务器
使用自定义哈希hashContainer,在处理新的连接,新的数据,新的封包,以及解包,发包,粘包的过程,哈希容器性能非常高效,增、删、查、改永远不会随着连接人数的上升而降低性能,增、删、查、改的复杂度永远都是恒定的O(1)。3、
服务器
底层封装没有使用任何第三方网络库以及任何第三方插件,自由度非常的高,出了任何BUG,你都有办法去修改,查找
问题
也非常方便,在windows下使用iocp,linux下使用epoll.4、讲解c++纯
客户端
,主要用于
服务器
之间通信,也就是说你想搭建多层结构的
服务器
,
服务器
与
服务器
之间使用socket通信。还可以使用c++
客户端
做压力测试,开辟多线程连接
服务器
,教程提供了压力测试,学员可以自己做压力测试
服务器
性能。5、赠送ue4和unity3d通信底层框架以及多人交互demo,登录,注册,玩家离开,同步主要是教会学员
服务器
与
客户端
如何交互。6、赠送c++连接mysql数据库框架demo,登录,注册,玩家离开数据持久化.7、
服务器
教程使用自定义通信协议,同时也支持protobuf,选择权在开发者自己手里,想用什么协议都可以,自由度高。8、
服务器
教程使用手动敲代码逐句讲解的方式开展教学课程。非喜勿喷,谢谢大家。9、
服务器
教程提供源码,大家可以在平台提供的地址下载或者联系我,
服务器
使用c++11部分标准,std::thread,条件变量,线程锁,智能指针等,需要学员具备一定c++知识,购买前请慎重考虑。
Signalr即时通讯.Net MVC Demo 下载
支持.net framework 4.0的双向通讯组件 实现实时通信。什么是实时通信的Web呢?就是让
客户端
(Web页面)和
服务器
端可以互相通知消息及调用方法,当然这是实时操作的。 WebSockets是HTML5提供的新的API,可以在Web网页与
服务器
端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用其它技术来保证达到相同效果。 SignalR当然也提供了非常简单易用的高阶API,使
服务器
端可以单个或批量调用
客户端
上的JavaScript函数,并且非常 方便地进行连接管理,例如
客户端
连接到
服务器
端,或断开连接,
客户端
分组,以及
客户端
授权,使用SignalR都非常容易实现。
TCP通信—
客户端
与
客户端
的
双向通信
3.开展一个线程负责接收到
客户端
2的信息发送给
客户端
1;2.
服务器
记录
客户端
实名连接,并显示
客户端
数据记录;3.
客户端
退出,
服务器
和另一
客户端
显示相应提示;2.主程序负责接收
客户端
1的数据发送给
客户端
2;1.实现
客户端
与
客户端
之间的TCP
双向通信
;1.定义数组保存
客户端
文件描述符;4.植入线程--TCP接收数据。1.建立socket连接。2.绑定IP和端口号。
网络及通讯开发
1,316
社区成员
8,873
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章