本帖最后由 VisualEleven 于 2011-04-10 17:07:51 编辑

解决方案 »

  1.   

    Send响应函数没有问题,那也许就是接受的时候有问题,调试一下,具体是哪里出问题了?错误代码是什么?
      

  2.   

    调试没有任何错误,我建立了两个socket分别用来传送下棋和聊天信息,这样可以吗?
      

  3.   

    void CFivechessDlg::OnBinSend()  
    {
    CClientDiag dlg;
    m_port=dlg.m_port;

    //dwIP=dlg.m_bIP;
    这是在干什么?后面就没用这个dlg对象的引用了??
      

  4.   

    我想把客户端类定义的端口(m_port)值赋给聊天使用的端口:addrTo.sin_port=htons(GetDlgItemText(IDC_EDIT_PORT_S,CString(m_port)));
      

  5.   

     CString strSend;
        GetDlgItemText(IDC_EDIT_SEND,strSend);            //获取要发送的数据
        sendto(m_socket,strSend,strSend.GetLength()+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR)); 如下修改也许可以
     GetDlgItemText(IDC_EDIT_SEND,strSend);            //获取要发送的数据
     sendto(m_socket,strSend.GetBuffer(),strSend.GetLength()+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR)); 
    strSend.releaseBuffer();sendto 第二个参数 是 待发送数据缓冲区  你直接使用一个类数据 在sendto函数会导致在发送过程中内存违规访问而使程序崩溃最后我很难理解 你是如何能够编译通过的;你用什么工具编译的?
      

  6.   

    对上面的程序更正下:
    CString strSend;
      GetDlgItemText(IDC_EDIT_SEND,strSend); //获取要发送的数据
      sendto(m_socket,strSend,strSend.GetLength()+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));  如下修改也许可以
     GetDlgItemText(IDC_EDIT_SEND,strSend); //获取要发送的数据
     sendto(m_socket,strSend.GetBuffer(),strSend.GetLength(),0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));  //这里修改了参数2 和参数3 不要试图将参数3设置的比缓冲区长 那么结果很可能还是崩溃
    strSend.ReleaseBuffer();//如果还出错 这句可省略但程序有溢出风险sendto 第二个参数 是 待发送数据缓冲区 你使用一个类数据 在sendto函数会导致在发送过程中内存违规访问而使程序崩溃最后我很难理解 你是如何能够编译通过的;你用什么工具编译的?
      

  7.   

    还是不行,依旧点发送自动退出。怎么回事?是不是不能建立两个socket?
      

  8.   

    一台机器上两个socket可以吗?没试过,你的代码好长啊……不行换个简单点的程序代替你那个五子棋吧。
      

  9.   

    [email protected] 也给我一份