社区
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;
}
...全文
187
10
打赏
收藏
CSocket的bind函数问题
serversocket.Bind(curp->GetPort()) serversocket.Bind(1000) 这两个结果完全不同怎么回事,但是GetPort()返回的也是1000啊 但结果相差完全不同 但好像都没报错 UINT NetServer::GetPort(){ return m_port; }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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通信
3. **绑定到端口**:利用C
Socket
的
Bind
函数
将
socket
与本地IP地址和端口号绑定。UDP通信中,接收方和发送方都需要绑定到一个特定端口。 4. **设置协议类型**:在绑定之前,需要设置
SOCKET
的类型为SOCK_DGRAM,因为...
C
Socket
类的使用,实现TCP/UDP在局域网内通信
1. 创建C
Socket
对象并绑定:与TCP类似,创建C
Socket
对象后,使用
Bind
()
函数
绑定到本地端口。 2. 数据发送:使用C
Socket
::SendTo()
函数
向指定的远程地址和端口发送数据。UDP是无连接的,因此无需事先建立连接。 3. ...
C
Socket
的一个实例
创建一个C
Socket
对象后,需要调用Create
函数
来初始化套接字,然后可以调用
Bind
函数
绑定本地端口,使服务器能够监听特定端口上的连接请求。Listen
函数
用来设置服务器等待客户端的连接,而Accept
函数
则用于接收客户端...
ChatRoom(C
socket
).rar_c
socket
2. **绑定(
Bind
)**:接着,我们使用C
Socket
::
Bind
函数
将
Socket
对象与本地端口绑定,这样
Socket
就等待在特定端口上接收数据。 3. **监听(Listen)**:对于服务器端,需要使用C
Socket
::Listen
函数
开启监听模式,...
C
Socket
_Server.zip
3. 绑定:使用
Bind
函数
将套接字与特定的IP地址和端口号关联。 4. 监听:调用Listen
函数
使套接字进入监听状态,等待客户端连接。 5. 接受连接:当有客户端请求连接时,Accept
函数
会返回一个新的C
Socket
对象用于与...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章