winsocket的小问题,请指点一下:
我写了一个小小的例程,是用来获取本地ip的,编译的时候没有错误,但连接的时候老是报错:
--------------------Configuration: TestIP - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol __imp__inet_ntoa@4
main.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
main.obj : error LNK2001: unresolved external symbol __imp__gethostname@8
main.obj : error LNK2001: unresolved external symbol __imp__WSACleanup@0
main.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
Debug/TestIP.exe : fatal error LNK1120: 5 unresolved externals
Error executing link.exe.
TestIP.exe - 6 error(s), 0 warning(s)
好像是提示winsock2.h 什么问题的,但我同样用在bcb5里面却一点问题都没有,请各位看看。
源码:
# include "winsock2.h"
# include "iostream.h"
void GetHostIpAddress()
{
struct hostent *thishost;
struct in_addr in;
char myname[80];
char *ptr,*hostname;
WORD mVersion;
WSADATA wsadata;
int err;
mVersion = MAKEWORD(2,0);
err = WSAStartup(mVersion,&wsadata);
if(err !=0 )
return;
if(LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 0)
{
WSACleanup();
return;
}
if(gethostname(myname,80) ==SOCKET_ERROR)
return;
if(!(thishost = gethostbyname(myname)))
return;
hostname = thishost->h_name;
memset((void *) &in,sizeof(in),0);
in.s_addr = *((unsigned long *)thishost->h_addr_list[0]);
if(!(ptr =inet_ntoa(in)))
return;
WSACleanup();
cout<<"This Computer Ip Address is: "<<ptr<<endl;
}
void main()
{
GetHostIpAddress();
}