gprs无线模块,保持socket长连接问题

wind00sky 2010-12-09 11:49:16
我现在遇到一个问题,就是使用gprs模块来进行下位与上位的通信,下位是工控机上的,工控机上面连接着一个无线模块,下位与上位通信要用长连接,而且一个下位会同时和几个上位进行通信,但现在主流的无线模块好像都是集成tcp/ip协议栈的,本身也只能同时与一个远程主机保持长连接,不知道各位大侠有没有好办法哪。

我现在能想到的就是工控机,直接拿这个无线模块拨号上网,然后再进行普通的socket通信,就和普通上网一样了。
...全文
378 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
上善若水邻 2010-12-09
  • 打赏
  • 举报
回复
多线程不知道可不可以??
bcj00000 2010-12-09
  • 打赏
  • 举报
回复

下位机-->XXXXXX-->上位机
|
|
-->上位机

|
|
-->上位机
bcj00000 2010-12-09
  • 打赏
  • 举报
回复
下位机-->XXXXXX-->上位机
|
|
-->上位机

|
|
-->上位机
bcj00000 2010-12-09
  • 打赏
  • 举报
回复
[img=c]
下位机-->XXXXXX-->上位机
|
|
-->上位机

|
|
-->上位机
[/img]
wind00sky 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q616804668 的回复:]

多线程不知道可不可以??
[/Quote]
在正常网络环境下,用多线程是没有问题的,现在是因为连接的是无线通信模块,工控机要通过这个无线模块,走gprs网络来与远程主机通信。
wind00sky 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 heskyii 的回复:]

就是说只能改造下位机的GPRS模块,让其能启动多个进程同时与多个上位机连接,不过问题又出来了——究竟有多少个上位机需要建立连接,如何确定该启动的进程数(多少个上位机的IP+PORT)。
[/Quote]
不好意思回复晚了,我的意思是说,无线模块只支持一个socket连接,而我的程序必须要满足调用多个socket的连接,我用不同的文件描述符去连接不同的远程服务端,用多线程或者是其它方式在正常模式下都是可行的吧,但就是因为我要走串口去调用无线模块,而无线模块内部支持tcp/ip协议族,通过AT指令控制,所以才会有现在的问题。
heskyII 2010-12-09
  • 打赏
  • 举报
回复
就是说只能改造下位机的GPRS模块,让其能启动多个进程同时与多个上位机连接,不过问题又出来了——究竟有多少个上位机需要建立连接,如何确定该启动的进程数(多少个上位机的IP+PORT)。
heskyII 2010-12-09
  • 打赏
  • 举报
回复
不知道其他人有什么提议,我认为没辙,原因如下:
基于TCP/IP的SOCKET通讯连接的建立是一个四元组(客户端IP,客户端端口,服务端IP,服务端端口),通过这个确定一个长连接的一一对应关系。
想让一个客户端同时与多个服务端连接,那只有启用多个独立进程,即必须存在多个不同的四元组。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧