////////////////////////////////////////////////
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 为什么?
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 为什么?
应该先调用这部分在创建socket
这个是从MFC对话框程序中截取的WSAStartup() 在WINAPP的 InitInstance()
SOCKET部分 在一个 按钮的相应函数部分
你把他转成字节流看看sockaddr.sin_addr .S_un .S_addr =htonl(inet_addr("192.168.0.18"));
如果还不行。。看下你的网络环境。申请向外连接的时候是不是被防火墙默认屏蔽了
#include <winsock2.h>
#include <Ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"ws2_32.lib") WSAStartup(MAKEWORD(2,2),&wsaData);没有看到你的程序里面有?