社区
C++ 语言
帖子详情
CSocket的bind函数问题
warmyellow
2009-04-05 08:41:42
serversocket.Bind(curp->GetPort())
serversocket.Bind(1000)
这两个结果完全不同怎么回事,但是GetPort()返回的也是1000啊 但结果相差完全不同 但好像都没报错
UINT NetServer::GetPort(){
return m_port;
}
...全文
194
10
打赏
收藏
CSocket的bind函数问题
serversocket.Bind(curp->GetPort()) serversocket.Bind(1000) 这两个结果完全不同怎么回事,但是GetPort()返回的也是1000啊 但结果相差完全不同 但好像都没报错 UINT NetServer::GetPort(){ return m_port; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mengde007
2009-04-05
打赏
举报
回复
[Quote=引用 9 楼 warmyellow 的回复:]
if(!serversocket.Socket())
[/Quote]
应该是serversocket.Create(1000)吧
CSocket的成员函数Create()在内部就自动bind()了,所以,楼主的不对啊
warmyellow
2009-04-05
打赏
举报
回复
[Quote=引用 8 楼 Paradin 的回复:]
把其周围代码发上来看看。
[/Quote]
NetServer::NetServer(){
NetServer("127.0.0.1",1000,30000);
}
NetServer::NetServer(CString ip,UINT port/* =1000 */,int times/* =30000 */){
LPVOID temp=NULL;
this->m_port=port;
this->m_Ip=ip;
this->m_timeout=times;
this->m_isstop=true;
this->m_str=_T("");
this->m_opresult=false;
}
UINT NetServer::GetPort(){
return m_port;
}
UINT ServerRun(LPVOID argc){
CString str;
str.Format("%d",(int)(argc));
AfxMessageBox(str);
NetServer* curp=(NetServer*)argc;
CSocket serversocket;
if(!AfxSocketInit()){
AfxMessageBox(_T("套接字初始化问题!请重试!"));
return false;
}
if(!serversocket.Socket()){
AfxMessageBox(_T("套接字初始化问题!请重试!"));
return false;
}
CString sstr;
if(curp->GetPort()==1000)
str.Format("%d",curp->GetPort());
AfxMessageBox(sstr);
if(!serversocket.Bind(1000,curp->GetIp())){
AfxMessageBox(_T("端口绑定错误!请重试!"));
return false;
}
if(!serversocket.Listen(10)){
AfxMessageBox(_T("系统监听设置出现问题!请重试"));
return false;
}
curp->SetServerStop(false);
CSocket getsocket;
AfxGetApp()->m_pMainWnd->MessageBox(_T("dinga!"));
while(true){
if(curp->IsServerStop()){
AfxGetApp()->m_pMainWnd->MessageBox(_T("stop!"));
break;
}
if(!((serversocket).Accept(getsocket))){
continue;
}else{
char clientmsg[1024]={0};
getsocket.Receive(clientmsg,1024);
CString* str=curp->GetStrPoint();
*str=_T(clientmsg);
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLIENTMSG,int(curp));
if(curp->GetOpResult()){
getsocket.Send("success",20);
}else{
getsocket.Send("fail",20);
}
}
curp->SetOpResult(false);
getsocket.Close();
}
serversocket.Close();
return 0;
}
Paradin
2009-04-05
打赏
举报
回复
把其周围代码发上来看看。
猫已经找不回了
2009-04-05
打赏
举报
回复
serversocket.Bind(curp->GetPort())
那应该是参数函数调用出问题,仔细对比参数类型。
serversocket.Bind(1000)
这样确定没问题是吧?
warmyellow
2009-04-05
打赏
举报
回复
[Quote=引用 4 楼 blh 的回复:]
引用楼主 warmyellow 的帖子:
serversocket.Bind(curp->GetPort())
serversocket.Bind(1000)
这两个结果完全不同怎么回事,但是GetPort()返回的也是1000啊 但结果相差完全不同 但好像都没报错
UINT NetServer::GetPort(){
return m_port;
}
什么结果不同,你怎么知道
port = curp->GetPort();
serversocket.Bind(port);port 不是1000???
[/Quote]
serversocket.Bind(curp->GetPort())
建立的服务器虽然不报错,但是客户端无法访问
serversocket.Bind(1000)
这个却能访问
而且用前者在CMD下 netstat -a 没看见1000端口被监听
而后者却看到被监听了,再有我用if(curp->GetPort()==1000)判断了curp->GetPort()确实是1000
woods2001
2009-04-05
打赏
举报
回复
结果应该是相同的
Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL );
bind函数第一个参数是UINT
如果你写的那个函数 返回的m_port也是UINT 那应该没啥错吧
楼主在仔细瞧瞧~
blh
2009-04-05
打赏
举报
回复
[Quote=引用楼主 warmyellow 的帖子:]
serversocket.Bind(curp->GetPort())
serversocket.Bind(1000)
这两个结果完全不同怎么回事,但是GetPort()返回的也是1000啊 但结果相差完全不同 但好像都没报错
UINT NetServer::GetPort(){
return m_port;
}
[/Quote]
什么结果不同,你怎么知道
port = curp->GetPort();
serversocket.Bind(port);port 不是1000???
warmyellow
2009-04-05
打赏
举报
回复
netstat -a没有监听1000程序,而且我用if(curp->GetPort()==1000)判断了curp->GetPort()确实是1000
猫已经找不回了
2009-04-05
打赏
举报
回复
serversocket.Bind(curp->GetPort())
结果不同?那最后绑定的端口是什么?怎么判断出来的。
mengde007
2009-04-05
打赏
举报
回复
等等,curp->GetPort()返回的是什么格式的。确定是int类型吗,
你应该检查一下,
MFC中利用C
Socket
实现UDP通信
MFC中利用C
Socket
实现UDP通信
C
Socket
类的使用,实现TCP/UDP在局域网内通信
C
Socket
类的使用,实现TCP/UDP在局域网内通信 这是同步(阻塞)模式
C
Socket
的一个实例
我写的一个C
Socket
通信例子 利用消息处理的,可以参考
ChatRoom(C
socket
).rar_c
socket
C
Socket
编程,既可以充当客户端又可以充当服务器。
C
Socket
_Server.zip
C
Socket
服务器 客户端 示例
C++ 语言
65,207
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章