winsock bind function error

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:00:07
#include<iostream>
#include<string>
#include<winsock2.h>
using namespace std;
#pragma comment(lib,"wsock32.lib")
void main(){
//wsastartup and socket
WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);
SOCKET d_socket=0;
d_socket=socket(AF_INET,SOCK_STREAM,0);
cout<<"socket is"<<d_socket<<endl;
//bind
struct sockaddr_in sa;

sa.sin_family = AF_INET;
sa.sin_port = htons(3410); /* short, NBO*/
sa.sin_addr.s_addr = inet_addr("132.241.5.10");
ZeroMemory(&(sa.sin_zero), 8);
cout<<bind(d_socket,(struct sockaddr*)(&sa),sizeof(struct sockaddr));
WSACleanup();
}
请问高手:为什么我的Bind函数总是返回一个-1呢?也就是不能正确执行!
MSDN上说:
Bind
Return Values
If no error occurs, bind returns zero. Otherwise, it returns SOCKET_ERROR, and a specific error code can be retrieved by calling WSAGetLastError.
我不能返回0说明我的调用出错了,调用W

返回的错误是0049还是10049?
可以用返回的错误码在MSDN里查,我记得10049是常见错误,我这里现在没有MSDN

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

由于放假回家没有带什么资料,也没有MSDN,可能不好说准确。我觉得你有点混乱,建议你看看Windows网络编程的书,如果你的电脑IP不固定,可以用一个地址解析函数得到自己的IP,套接字初始化时所需要的本地IP是用于绑定端口等操作的,不能乱写。还有,模模糊糊我记得INADDR_ANY表示的是什么什么地址协议类型为所有类型,跟具体的本地IP没太大关系。

建议你还是看看书吧。