为什么SOCKET老是创建失败

GUNDAMRX 2007-08-29 01:37:12
////////////////////////////////////////////////
m_socket=socket(AF_INET,SOCK_STREAM,0);
if(m_socket==INVALID_SOCKET){
MessageBox("socket error!");
int i=WSAGetLastError();
char p[8];
sprintf(p,"%d",i);
MessageBox(p);
}
else{
MessageBox("socket successful");
}

SOCKADDR_IN sockaddr;
sockaddr.sin_addr .S_un .S_addr =inet_addr("192.168.0.18");
sockaddr.sin_family =AF_INET;
sockaddr.sin_port =htons(12345);
if(SOCKET_ERROR==connect(m_socket,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR))){
MessageBox("connect error!");
int i=WSAGetLastError();
char p[8];
sprintf(p,"%d",i);
MessageBox(p);
}

else{
MessageBox("successful");
}
closesocket(m_socket);
return;
}
//////////////////////////
WSADATA wsadata;
if(WSAStartup(MAKEWORD(2,2),&wsadata)){
AfxMessageBox("wsastartup error!");
return FALSE;
}
if(LOBYTE(wsadata.wVersion )!=2||
HIBYTE(wsadata.wVersion )!=2){
AfxMessageBox("wsa version error!");
WSACleanup();
return FALSE;
}
//////////////////////////////
为什么SOCKET 老是创建失败
用GetLastError() 得到的返回值都是0 为什么?
...全文
626 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoya9301 2007-09-06
  • 打赏
  • 举报
回复
不知道你这几句写了没有?
#include <winsock2.h>
#include <Ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"ws2_32.lib")

WSAStartup(MAKEWORD(2,2),&wsaData);

没有看到你的程序里面有?
2025‘someday 2007-09-04
  • 打赏
  • 举报
回复
http://blog.csdn.net/wang921718/archive/2007/09/04/1772396.aspx

看看这里我的BLOG,希望对你能有帮助!
arong1234 2007-09-03
  • 打赏
  • 举报
回复
GetLastError必须立刻调用,不能显示消息后再调用,因为AfxMessageBox也会修改LastError信息
token0801 2007-09-02
  • 打赏
  • 举报
回复
WSAGetLastEror和MessageBox的位置换一下就知道什么原因了
lin_style 2007-08-30
  • 打赏
  • 举报
回复
The inet_addr function interprets the character string specified by the cp parameter

sockaddr.sin_addr .S_un .S_addr =inet_addr("192.168.0.18");
你把他转成字节流看看

sockaddr.sin_addr .S_un .S_addr =htonl(inet_addr("192.168.0.18"));


如果还不行。。看下你的网络环境。申请向外连接的时候是不是被防火墙默认屏蔽了
GUNDAMRX 2007-08-29
  • 打赏
  • 举报
回复
WSAStartup() 源程序是在前面
这个是从MFC对话框程序中截取的

WSAStartup() 在WINAPP的 InitInstance()
SOCKET部分 在一个 按钮的相应函数部分
boolpc 2007-08-29
  • 打赏
  • 举报
回复
套接字加载没放对地方吧。JF
q44072429 2007-08-29
  • 打赏
  • 举报
回复
这个问题的解决方法 楼上的都说了,你还是给分把

建议你学会使用WSAGetLastError然后找到 具体那里错了,以后也有用
wyjkk 2007-08-29
  • 打赏
  • 举报
回复
WSAStartup放在createsocket前面
psprite 2007-08-29
  • 打赏
  • 举报
回复
WSAStartup在哪里装载?是否保证此处成功?
应该先调用这部分在创建socket
lin_style 2007-08-29
  • 打赏
  • 举报
回复
你不会把WSAStartup。。这个东东放在后面吧

18,357

社区成员

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

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