首页 / 知识
关于c#:在同一个开放套接字上进行异步多方向服务器-客户端通信?
2023-04-11 14:47:00

Asynchronous multi-direction server-client communication over the same open socket?我有一个客户端服务器应用程序,客户端在Windows Mobile 6设备上,用C编写,服务器在完整Windows上,用C#编写。 最初,我只需要它就可以将消息从客户端发送到服务器,而服务器只回发一条确认消息,即已收到消息。现在,我想对其进行更新,以便服务器实际上可以向客户端发送消息以请求数据。由于我目前已对其进行设置,因此客户端仅在将数据发送到服务器后才处于接收模式,这不允许服务器随时发送请求。我将不得不等待客户端数据。我的第一个想法是使用单独的开放套接字在客户端上创建另一个线程,侦听服务器请求……就像服务器已经尊重客户端一样。有没有一种方法可以在同一线程内和使用同一套接字向所有服务器随时发送请求? 您是否可以使用具有 当我需要编写一个具有客户端-服务器模型的应用程序时,客户端可以在需要时离开并进入,(我假设您的应用程序在使用移动设备时也是如此),我确保客户端发送向服务器发送的在线消息,指示它们已连接并准备执行所需的操作。 那时服务器可以通过相同的打开连接将消息发送回客户端。 也,但是我不知道这是否适合您,我已经将客户端发送到服务器的某种心跳信号通知了它仍然在线。这样,服务器可以知道客户端何时被强制从网络断开连接,并且可以将该客户端标记为脱机。 在单线程中完全可以使用异步通信! 网络软件开发中有一个常见的设计模式,称为反应器模式(请看本书)。一些众所周知的网络库提供了这种模式的实现(请看ACE)。 简而言之,反应堆是一个对象,您将所有套接字注册到其中,然后等待某些事情。如果发生任何事情(新数据到达,连接关闭...),反应堆将通知您。当然,您只能使用一个套接字异步发送和接收数据。 查看asio。它是用于异步IO的交叉兼容c库。我不确定这是否对服务器有用(我从未尝试过将标准的c DLL链接到c#项目),但对客户端则有用。 我们在应用程序中使用它,它解决了我们大多数的IO并发问题。 我不清楚您是否要向C#中的服务器或C中的客户端添加异步位。 如果您正在谈论使用C进行此操作,则桌面Windows平台可以通过使用重叠I / O的API异步执行套接字I / O。对于套接字,WSASend和WSARecv都允许异步I / O(请阅读有关LPOVERLAPPED参数的文档,您可以在其中填充I / O完成时设置的事件)。 我不知道Windows Mobile平台是否支持这些功能,因此您可能必须进行一些其他挖掘。 |
最新内容
相关内容
python静态web服务器如何实现
python静态web服务器如何实现,数据,培训,服务,代码,时间,服务器,静态,报文,浏览器,消息,python静态web服务器如何实现的方法:1、编写TCP服务器关于Flash:ActionScript 3.0套接字
关于Flash:ActionScript 3.0套接字无法重新连接,关于Flash:ActionScript 3.0套接字无法重新连接,连接超时,服务器,连接,侦听器,ActionS我可以使用JavaScript创建客户端电
我可以使用JavaScript创建客户端电子邮件吗?,我可以使用JavaScript创建客户端电子邮件吗?,客户端,邮件,网页,操作,Can I use JavaScrip关于macos:与MS SQL Server配合使用
关于macos:与MS SQL Server配合使用的Mac OS X的SQL客户端,关于macos:与MS SQL Server配合使用的Mac OS X的SQL客户端,结果集,网格,编关于php:将文件复制到FTP服务器上后
关于php:将文件复制到FTP服务器上后的文件大小差异,关于php:将文件复制到FTP服务器上后的文件大小差异,脚本,服务器,迁移,将该,File si关于javascript:ASP.Net自定义客户
关于javascript:ASP.Net自定义客户端验证,关于javascript:ASP.Net自定义客户端验证,费用,网站,自定义,验证,ASP.Net Custom Client-Sid异步函数的实例分享
异步函数的实例分享,异步,函数,的,实例,分享,异步,函数,async,, 异步函数 异步函数(async function)是 ECMAScript 2017 (EVue3异步加载中使用 watch
Vue3异步加载中使用 watch,Vue3,异步,加载,中,使用,watch,异步,加载,中,,异步加载中使用 watch异步数据的加载 Vue 通过 watch 选项如何在z / OS上的C ++中使用C套接
如何在z / OS上的C ++中使用C套接字API,如何在z / OS上的C ++中使用C套接字API,套接字,编译时错误,我在,告诉我,How to use the C so