关于socket的一个疑问

碎碎念 2014-11-17 10:41:45
我这边有两台设备,同一个厂家生产的,要实现用计算机对这两台设备的参数进行实时监控,通信协议为TCP 两台设备的ip地址,我设置好了,port均为4000,
遇到的主要问题是,在开始前,我确定两台设备都能ping通,但是,当用socket连接上一台设备以后,在连接第二台设备就无法连接,

if(!pumpIsCnn0)
{

pumpSock0->abort();
pumpSock0->connectToHost(QString("192.168.1.9"), 4000);
if(pumpSock0->waitForConnected(3000))
{
pumpIsCnn0 = true;
pumpTh->isCnn0 = true;
pumpTh->pSock[0] = pumpSock0;

ui->connAllBtn->setText(QString("已连接"));
}
}
if(!pumpIsCnn1)
{

pumpSock1->abort();
pumpSock1->connectToHost(QString("192.168.1.3"), 4000);
if(pumpSock1->waitForConnected(3000))
{
pumpIsCnn1 = true;
pumpTh->isCnn1 = true;
pumpTh->pSock[1] = pumpSock1;

ui->connAllBtn->setText(QString("已连接"));
}


连接上一台设备以后,第二个就连不上了,ping也不通了,要关闭已经连接上的那个socket,然后过了一会,才能ping通,这是怎么回事?是不是,这两个port的值,不能一样,但是,我觉得,这个port指的的设备的port和我这边没关系吧,我问过厂家的技术支持了,他们说他们的可以同时连接多台设备= =
...全文
356 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
707wk 2014-11-20
  • 打赏
  • 举报
回复
开双线程。。。
赵4老师 2014-11-20
  • 打赏
  • 举报
回复
有时候,坐等跟你配合调试的人找出他自己的Bug也是一种幸福。
碎碎念 2014-11-19
  • 打赏
  • 举报
回复
引用 3 楼 turingo 的回复:
Demo的例子程序应该可以要求他们提供源代码的。 [quote=引用 2 楼 lanxue_1988 的回复:] [quote=引用 1 楼 turingo 的回复:] 那就请厂家提供一个连接多台设备的例子啊!
嗯,他们说一会,发,不过,源代码应该不会给的,我这边需要把这部分的监控和其他的合并到一起,所以,还是要自己写。。。[/quote][/quote] 厂家给的程序,我测了,问题依旧,他们说正在看设备里的程序,分析是哪里出了问题,分析两天了- - 我也觉得这个问题挺奇怪的,连接一台设备居然能影响另一台设备。。。。
碎碎念 2014-11-19
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
实在不行楼主开两个线程,一个线程负责一个连接。
我试过了,不管用,连接上一个socket以后,另一台设备,ping不通了,也就连不上了,偶尔也能连上,但是,连接上第二台设备以后,第一台设备就无法正常通信了,也是ping不通了。 这个问题一直想不通
碎碎念 2014-11-17
  • 打赏
  • 举报
回复
在那段代码之前,socket 已经new 过了
碎碎念 2014-11-17
  • 打赏
  • 举报
回复
引用 3 楼 turingo 的回复:
Demo的例子程序应该可以要求他们提供源代码的。 [quote=引用 2 楼 lanxue_1988 的回复:] [quote=引用 1 楼 turingo 的回复:] 那就请厂家提供一个连接多台设备的例子啊!
嗯,他们说一会,发,不过,源代码应该不会给的,我这边需要把这部分的监控和其他的合并到一起,所以,还是要自己写。。。[/quote][/quote] 其实,我也想知道,正常情况下, 我那么写是没问题的吧?
图灵狗 2014-11-17
  • 打赏
  • 举报
回复
Demo的例子程序应该可以要求他们提供源代码的。
引用 2 楼 lanxue_1988 的回复:
[quote=引用 1 楼 turingo 的回复:] 那就请厂家提供一个连接多台设备的例子啊!
嗯,他们说一会,发,不过,源代码应该不会给的,我这边需要把这部分的监控和其他的合并到一起,所以,还是要自己写。。。[/quote]
碎碎念 2014-11-17
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
那就请厂家提供一个连接多台设备的例子啊!
嗯,他们说一会,发,不过,源代码应该不会给的,我这边需要把这部分的监控和其他的合并到一起,所以,还是要自己写。。。
图灵狗 2014-11-17
  • 打赏
  • 举报
回复
那就请厂家提供一个连接多台设备的例子啊!
赵4老师 2014-11-17
  • 打赏
  • 举报
回复
或者用两个进程更省事。
赵4老师 2014-11-17
  • 打赏
  • 举报
回复
实在不行楼主开两个线程,一个线程负责一个连接。
碎碎念 2014-11-17
  • 打赏
  • 举报
回复
有没有人遇到过类似的问题?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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