//服务器端
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) )“就有错误信息。请帮我回答一下,先谢谢了。
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) )“就有错误信息。请帮我回答一下,先谢谢了。
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);
}
另外,CSocket/CAsyncSocket默认是STREAM,你怎么当DGRAM的在用啊???
Create就行了,干吗还Bind,Create里面本身就调了Bind
另外,CSocket/CAsyncSocket默认是STREAM,你怎么当DGRAM的在用啊???谢谢您的回答。我已经注销了“ChatSend.Bind(nPort,strAddr);“,但是还不行,你指的第二点"CSocket/CAsyncSocket默认是STREAM,你怎么当DGRAM的在用啊???" 我不是很懂,请再详细一点。谢谢了。
Server.Send(csSendText,csCounts);
同理把:int ii = ChatReceive.ReceiveFrom(&csReceiveText,5,strIp,nPort);
改为:int ii = ChatReceive.Receive(&csReceiveText,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);
试试” 还是出问题,是不是还有其它问题。“我编译都没错的”,有其它要注意的地方吗?
谁有类似例子给我一个,越简单越好。谢谢了。
-----------“真没想到会这么烦”
我调过了,就是这个问题。不是Connect错,是Connect下面的Receive错。快给分吧
给分了,但是再问一下“ bugz(歪歪) ”,ReceiveFrom的第三和第四个参数是怎么设的。 谢谢大家的参与!!!!!!!!!**********************************************************/