现在有两个本地程序,其中一个(A程序)可向另一个(B程序)发送控制命令,A和B通过Socket通信,单独启动A、B程序能正常通信。现在A程序加一按钮使A程序能启动B程序,使用ShellExecute(NULL,"open",(LPCTSTR)m_deckDir,(LPCTSTR)m_deckcmd,NULL,SW_SHOWNORMAL);
m_deckDir为B程序全路径;
m_deckcmd为向B发送的启动参数
B程序启动后,A和B程序端口都正常打开,但B程序无法接受A程序发送的命令,请教高手

解决方案 »

  1.   

    这个要靠LZ自己去调试了吧?
    既然两个程序端口都正常打开了,那A发送数据成功吗?如果程序返回值成功,那可以通过本机抓包再确认下是否包正常发出,然后再调试B侧有无收到该包。
      

  2.   

    TCP or UDP,Server是否listen,Client是否connect???
      

  3.   

    调试跟踪下看看,或者trace输出日志
      

  4.   

    ShellExecute后, 两个就是独立的进程了, 注意调试一下代码吧
      

  5.   

    TCP
    Server显示listen,Client显示connect,本地IP和目标IP都是本机,
    Server本地端口6789,目标端口2945(随机)
    Client本地端口2945(随机),目标端口6789先抓包看看
      

  6.   


    在发送数据和接受数据时都加了MessageBox
    单独启动时服务端和客户端MessageBox都能弹出来,ShellExecute启动客户端后,客户端就没动静了
      

  7.   

    在虚拟机运行就相当于在两台机器上运行,而我要这两程序在一台机器运行,
    B要接受A的参数来决定加载内容,A能控制B现在问题是单独启动两程序通信OK,但是B不能动态加载,如果B由A启动,则B接收不到A的数据,以下是NETSTAT -NA显示的部分内容:
      TCP    10.1.38.149:3036       10.1.38.149:6789       ESTABLISHED     (B程序)
      TCP    10.1.38.149:6789       0.0.0.0:0              LISTENING       (A程序)
      TCP    10.1.38.149:6789       10.1.38.149:3036       ESTABLISHED     (A程序)
      

  8.   

    解决了,因为使用的通信类需要和窗口绑定的,而窗口是动态加载的,所以通信类有时和B程序没关联在一起,但通信类初始化成功,所以查看端口时显示连接正常,只是消息转发时没转到B程序
    PS:多谢各位