社区
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;
}
...全文
181
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类型吗,
你应该检查一下,
基于TCP的网络聊天室
(2)C
Socket
对象的Create
函数
用来创建Windows
Socket
,Create()
函数
会自行调用
Bind
()
函数
将此
Socket
绑定到指定的地址上面。如下例: Server
Socket
.Create(823); //服务器端需要指定一个端口号,我们用823。 ...
基于TCP的网络聊天室的设计
(2)C
Socket
对象的Create
函数
用来创建Windows
Socket
,Create()
函数
会自行调用
Bind
()
函数
将此
Socket
绑定到指定的地址上面。如下例: Server
Socket
.Create(823); //服务器端需要指定一个端口号,我们用823。 ...
MFC网络编程之自制浏览器
Socket
相关的操作由一系列API
函数
来完成,比如
socket
、
bind
、listen、connect、accept、send、sendto、recv、recvfrom等。调用这些API
函数
有一定的先后次序,有些
函数
的参数还比较复杂,对于开发者来说,不是很好用...
C++
socket
编程
Socket
相关的操作由一系列API
函数
来完成,比如
socket
、
bind
、listen、connect、accept、send、sendto、recv、recvfrom等。调用这些API
函数
有一定的先后次序,有些
函数
的参数还比较复杂,对于开发者来说,不是很好用...
打怪升级之C
Socket
回调
函数
的调用
C
Socket
回调
函数
的调用
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章