为什么我不能绑定网卡
下面是我写的部分程序,为什么到最后一步时弹出的对话框总是绑定错误,实在搞不懂
请各位大侠指点一二,谢谢拉!!!
WSAData wsaData;
BOOL flag=true;
SOCKET sock;
SOCKADDR_IN addr_in;
in_addr addr;
AnsiString strAdd;
char LocalName[16];
struct hostent *pHost;
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
ShowMessage("错误的Winsock版本");
return;
}
if ((sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP)) == INVALID_SOCKET)
ShowMessage("初始化失败!");
if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag)) == SOCKET_ERROR)
ShowMessage("设置IP头错");
if (gethostname((char*)LocalName, sizeof(LocalName)-1) == SOCKET_ERROR)
ShowMessage("获取主机名错");
if ((pHost=gethostbyname((char*)LocalName)) == NULL)
ShowMessage("获取地址错");
for(int i = 0; pHost->h_addr_list[i] != 0; ++i) //注意这里的循环
{
memcpy(&addr, pHost->h_addr_list[i], sizeof(in_addr));
strAdd = strAdd + " " + StrPas(inet_ntoa(addr));
}
ShowMessage(strAdd);
addr_in.sin_addr=*(in_addr *)pHost->h_addr_list[0];//IP
addr_in.sin_family = AF_INET;
addr_in.sin_port = htons(57274);
if (bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in)) == SOCKET_ERROR)
ShowMessage("绑定错误");
else
ShowMessage("绑定");