关于客户端socket连接,在不同的窗口上问题

Toshio 2013-12-07 11:33:24
有两个窗口,A窗口是这样的 class A : public CTcpPullClientListener,然后A窗口上,有一个连接按钮,点击一下,就与服务器建立连接,这一步没错,已经OK了,在A窗口上,还有另外一个按钮,按一下,弹出一个窗口B,因为这个窗口在代码里是写在class B,那么在class B,里如何调用客户端send,发送数据呢?因为class A已经连接服务器了嘛,那么class B肯定是不需要再连接了啊。但是我在class B里调用send,提示未连接
...全文
161 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lx624909677 2013-12-07
  • 打赏
  • 举报
回复
你的SOCKET对象定义成全局的了吗
Toshio 2013-12-07
  • 打赏
  • 举报
回复
搞定,终于发现什么得还是得靠自己。
Toshio 2013-12-07
  • 打赏
  • 举报
回复
我上段代码吧,有助于理解。
class B : public C
{
      public:
          CTest a;
}

B::B(): a(this)
{
}

class A: public B{

}

A::A() : B(){
      a->fun();
}

class F:public B{
}

F::F() : B()
{
   a->fun();  //这里这个a和上面那个a地址不一样,有没有办法让地址一样呢?
}
例如有一个窗口A,上面有一个按钮(ConnectSVRBtn),单击一下这个按钮,可以与远程TCP服务器建立起socket连接,然后在这个窗口A上,还有另外一个按钮(OpenWndBtn),单击一下这个按钮,会弹出一个新窗口B,在这个新窗口上,有一个按钮(SendTxt),这个按钮是想向服务器发送一段字符串,因为之前已经用窗口A按下ConnectSVRBtn已经与服务器建立socket连接了,那么理论上按下B窗口上的SendTxt,是不需要再次建立socket连接了吧,因为A窗口上已经建立过了嘛。但是窗口B上,SendTxt触发的时候,却提示socket连接未建立 Jason®(317471417) 12:51:06 而连接和发送都是调用上面那段代码中的CTest a这个方法来操作的 例如,ConnectSVRBtn函数内部其实是a->connectSVR(ip,port); 而SendTxt函数内部调用的是 a->send(CONNID, buf,len); 他们的问题就是出在,a->connectSVR(ip,port)建立成功后,这里a的地址和a->(connid,buf,len);的a的地址不一样 所以a->send(connid,buf,len);才会提示发送失败,因为未建立socket的错误 请问该怎么解决啊?望C++大神出来解答一下。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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