Android和C 套接字通信
Android and C++ Socket Communication
我正在开发一个应用程序,每秒从C 程序接收数据。该应用有时还需要将数据发送到C 程序。是否适合将插座用作两种实例之间的通信?对于每个实例,是否必须同时运行套接字服务器和客户端?
我认为,根据所需的时序行为会有不同的方法来完成此操作(设备是否必须同步接收消息,如果无法及时传递的消息被缓存,直到他们可以被纳交付等),Android设备的公共可及性(如果它们通过移动网络连接到许多移动网络中的NAT,则设备是否可以进入待机模式。
使用流插座(TCP)如果移动设备一直保持清醒,或者必须同步进行处理。
在这种情况下,一端必须是"服务器",而一端是"客户端"。因为移动设备倾向于进入待机模式,所以我会使用C 程序(如果在非移动设备上运行)作为服务器 - 这将是创建套接字,绑定它然后使用Listing的终点用于传入的连接。每当客户端连接到服务器时,都必须接受连接,然后通过使用相同的句柄发送和接收。
然后,移动设备将创建一个套接字并连接到服务器并可以将数据传输到它(它不必绑定或聆听)。通过相同的连接设备可以从服务器接收数据。
即使没有建立连接的服务器,服务器也需要将数据发送到移动设备,并且移动设备能够进入待机模式,则可以定期唤醒设备并进行轮询或使用服务器或使用该服务器Firebase Cloud Messaging System甚至简短的消息服务,或者 - 如果设备无法进入待机模式 - 也只需创建一个从C 应用程序中接受传入连接的收听套接字。
使用数据报插座(UDP)
在这种情况下,C 应用程序和Android应用程序都将创建并将套接字绑定到特定端口。然后,他们都可以通过向其他客户发送多播地址来将数据包(不可靠)发送给其他客户端,甚至可以在局域网中进行多播。当然,移动设备将错过在待机模式下从C 应用程序发送的数据包,并且C 应用程序在不运行的时间内会错过数据包。
使用消息队列(如果移动设备可以转到待机模式并且必须异步接收消息)
在这种情况下,如果队列持续存在,两个程序都不必同时运行,但是消息代理必须(例如RabbitMQ)。C 应用程序可以简单地将消息推入队列,任何订阅的移动设备都会立即接收它们,或者(对于持续的队列)以后在设备连接到服务器时。
如果不需要同步行为或传统的WebService甚至插座,也可以通过消息队列实现从移动设备到服务器的消息传递。
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- C++ 两台不同机器之间通过wifi进行套接字通信
- 关于套接字通信的线程
- 如何使用winsock在c++应用程序中实现安全套接字通信
- 用于线程间通信的 Windows 套接字
- Python 3 套接字和 QTcpsocket (c++) 之间的通信失败
- 用于通信C++的 UNIX 套接字
- Unity WebRequest 与 c++ 套接字通信
- 使用UNIX套接字C++客户端与Node.js服务器通信的简单示例
- Python和C++之间使用本地文件套接字的进程间通信
- Android和C 套接字通信
- 客户端JavaScript和C 套接字服务器之间的通信
- 为什么从我的代码中removig textbox.appendtext()在此处更改套接字通信
- 蓝牙可以接收数据,但不能传输数据(用C++进行套接字编程以与Matlab通信)
- 如何通过套接字在PHP和C++应用程序之间进行通信
- 使用 BSD 套接字的 HTTP 服务器不关闭连接或与 Windows 浏览器通信
- c++tcp多线程客户端/服务器-如何与线程套接字处理程序进行通信
- C#异步套接字与C++winsock2之间的通信
- 套接字编程中的客户端到客户端通信与许多客户端
- 基于套接字的通信独立于用于实现它的编程语言.怎么可能