C/S模型无法相互连接,跪求帮助!

开裆裤 2011-05-08 02:13:18
自己写了一个小的实验程序,但客户机和服务器无法连接!!(都在一台机子上)代码如下:
服务器:OnListen是对应的listen按钮。

void Cserver_testDlg::OnListen()
{
char test[] = "sever6789";
char rec[10];
// TODO: 在此添加控件通知处理程序代码
CSocket listenSocket, acceptSocket;
listenSocket.Create( 4000, SOCK_STREAM );
listenSocket.Listen( 5 );
listenSocket.Accept( acceptSocket );
acceptSocket.Send( test, 10 );
//acceptSocket.Receive( rec, 10 );
AfxMessageBox( (LPCTSTR)rec );
acceptSocket.Close();
}

客户机代码:

void Cclient_testDlg::OnListen()
{
// TODO: 在此添加控件通知处理程序代码
char test[]= "client123";
char rev[10];
for( int i=0;i<10;i++)
rev[i]='\0';
CSocket reciveSocket;
reciveSocket.Create();
reciveSocket.Connect( (LPCTSTR)"114.213.254.198", 4000 );
//reciveSocket.Send( test, 10 );
reciveSocket.Receive( rev, 10 );
AfxMessageBox( (LPCTSTR)rev );
reciveSocket.Close();
}
...全文
79 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
西湖秀才 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 smwhotjay 的回复:]

我远离mfc.只win32 & linux
[/Quote]
我socket时候也远离MFC
向立天 2011-05-18
  • 打赏
  • 举报
回复
我觉得你是不是先试一下create的时候指定地址然后bind一下看看能不能成功
lijianli9 2011-05-18
  • 打赏
  • 举报
回复
你这个IP地址 114.213.254.198 是本机你设置的ip吗?
smwhotjay 2011-05-11
  • 打赏
  • 举报
回复
我远离mfc.只win32 & linux
lirg8405 2011-05-11
  • 打赏
  • 举报
回复
确定是否调用了
 WSAStartup
其他的我不清楚了,我没用过CSocket这个类
wmnmtm 2011-05-09
  • 打赏
  • 举报
回复
//绑定服务器
reVal = bind(m_sServer,(sockaddr*)&servAddr,sizeof(SOCKADDR_IN));
if (SOCKET_ERROR == reVal)
{
AfxMessageBox(_T("服务器绑定失败"), MB_OK, 0);
closesocket(m_sServer);
WSACleanup();
return;
}else
{
// m_ctlTip.SetWindowText(_T("服务器绑定成功!"));
UpdateData(false);
}

//监听
reVal = listen(m_sServer,SOMAXCONN);
//AfxMessageBox("listen后一句");
if (SOCKET_ERROR == reVal)
{
AfxMessageBox(_T("服务器监听失败!"), MB_OK, 0);
closesocket(m_sServer);
WSACleanup();
return;
}
开裆裤 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]

服务器端程序没有调用CAsyncSocket::Bind()来进行绑定操作。
写socket程序都不判断函数调用的返回值吗?
[/Quote]
搜了下谷歌,找到相关知识。http://baike.c114.net/view.asp?id=13857-04760BDC
看来用了create之后就不用bind了,而采用NULL表示监听所有的IP地址。
开裆裤 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]

服务器端程序没有调用CAsyncSocket::Bind()来进行绑定操作。
写socket程序都不判断函数调用的返回值吗?
[/Quote]
首先谢谢你的回复。我已经调用了create了还要bind吗?
我差了下,现在还不是很统一。
但是我已经找到了问题,因为"114.213.254.198"是默认是char类型,所以应该吧connect中的地址写成L"114.213.254.198"。
我再看下能不能用了create后接着使用bind
Eleven 2011-05-08
  • 打赏
  • 举报
回复
服务器端程序没有调用CAsyncSocket::Bind()来进行绑定操作。
写socket程序都不判断函数调用的返回值吗?
「已注销」 2011-05-08
  • 打赏
  • 举报
回复
bind

18,356

社区成员

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

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