//服务器端
void CSjhsDlg::OnButton12()
{
if(!AfxSocketInit())
{
MessageBox("Windows Socket initial failed!","send",MB_ICONSTOP);
return;
} CSocket ChatSend,Server;
//nPort = 8636
int csCounts = 5 ;
CString csSendText("wzzjf"),
strAddr("192.168.0.158");
// strAddr("10.0.0.18");
UINT nPort = 8636 ;
if (!ChatSend.Create(nPort))
MessageBox("Send Socket create failed!","Send",MB_ICONSTOP);
else
{
ChatSend.Bind(nPort,strAddr);//mProt,strAddr
ChatSend.Listen();
ChatSend.Accept(Server);
}

Server.SendTo(csSendText,csCounts,nPort,strAddr);
// Server.SendTo("wzzjf0000",6,8636,"10.0.0.18");
Server.Close();
ChatSend.Close();
}
//客户端
void CSjhsDlg::OnButton14() 
{
if(!AfxSocketInit())
{
MessageBox("Windows Socket initial failed!","Receive",MB_ICONSTOP);
return;
}
CSocket ChatReceive;
CString csReceiveText("0"); 
// CString strIp("10.0.0.18");
CString strIp("192.168.0.158");
UINT nPort = 8636;

if (!ChatReceive.Create())
{
MessageBox("Receive Socket create failed!","Receive",MB_ICONSTOP);
return;
}
else
{
if ( ChatReceive.Connect("192.168.0.158",8636) ) //"10.0.0.18" strAddr,nPort);
int ii = ChatReceive.ReceiveFrom(&csReceiveText,5,strIp,nPort);
}
ChatReceive.Close();
MessageBox(csReceiveText);
}
我刚开始学习网络编程,这是我第一个程序(也是最简单的程序)。但是我调不通,客户端一运行到”if ( ChatReceive.Connect("192.168.0.158",8636) )“就有错误信息。请帮我回答一下,先谢谢了。

解决方案 »

  1.   

    Server端没有Lisen和Accept,看看msdn吧!
      

  2.   

    回复 :sans(sans)
             Server端没有Lisen和Accept,看看msdn吧!
               谢谢你的参与。
    我的Server端的Lisen和Accept,代码如下: if (!ChatSend.Create(nPort))
    MessageBox("Send Socket create failed!","Send",MB_ICONSTOP);
    else
    {
    ChatSend.Bind(nPort,strAddr);//mProt,strAddr
    ChatSend.Listen();
    ChatSend.Accept(Server);
    }
      

  3.   

    Create就行了,干吗还Bind,Create里面本身就调了Bind
    另外,CSocket/CAsyncSocket默认是STREAM,你怎么当DGRAM的在用啊???
      

  4.   

    回复: bugz(歪歪)
      Create就行了,干吗还Bind,Create里面本身就调了Bind
    另外,CSocket/CAsyncSocket默认是STREAM,你怎么当DGRAM的在用啊???谢谢您的回答。我已经注销了“ChatSend.Bind(nPort,strAddr);“,但是还不行,你指的第二点"CSocket/CAsyncSocket默认是STREAM,你怎么当DGRAM的在用啊???" 我不是很懂,请再详细一点。谢谢了。
     
      

  5.   

    Server.SendTo(csSendText,csCounts,nPort,strAddr);改为
    Server.Send(csSendText,csCounts);
    同理把:int ii = ChatReceive.ReceiveFrom(&csReceiveText,5,strIp,nPort);
    改为:int ii = ChatReceive.Receive(&csReceiveText,5);
    试试
      

  6.   

    用基于连接的套接字,SendTo 和 Send, ReceiveFrom 和 Receive 可以等同的
      

  7.   

    回复 papaya_zm(啊啊)
    “   Server.SendTo(csSendText,csCounts,nPort,strAddr);改为
    Server.Send(csSendText,csCounts);
    同理把:int ii = ChatReceive.ReceiveFrom(&csReceiveText,5,strIp,nPort);
    改为:int ii = ChatReceive.Receive(&csReceiveText,5);
    试试”    还是出问题,是不是还有其它问题。“我编译都没错的”,有其它要注意的地方吗?
        谁有类似例子给我一个,越简单越好。谢谢了。
                                    -----------“真没想到会这么烦”
      

  8.   

    int ii = ChatReceive.ReceiveFrom(&csReceiveText,5,strIp,nPort);这句的问题,那是个CString,怎么能去地址当char *用那。
    我调过了,就是这个问题。不是Connect错,是Connect下面的Receive错。快给分吧
      

  9.   

    /**********************************************************OK!!!
        给分了,但是再问一下“ bugz(歪歪) ”,ReceiveFrom的第三和第四个参数是怎么设的。      谢谢大家的参与!!!!!!!!!**********************************************************/