Posted on 2008-12-29 11:44
黄超 阅读(101)
评论(0) 编辑 收藏 引用
废话少说,记录笔记
非常简单,我要调用gethostname这个函数,相比用WINSOCK都需要用这个函数吧!如果单独用这个函数,怎么才能成功呢?
gethostname() 简述:
返回本地主机的标准主机名。
#include <winsock.h>
int PASCAL FAR gethostname(char FAR *name, int namelen);
name: 一个指向将要存放主机名的缓冲区指针。
namelen:缓冲区的长度。
注释:
该函数把本地主机名存放入由name参数指定的缓冲区中。返回的主机名是一个以NULL结束的字符串。主机名的形式取决于Windows Sockets实现-它可能是一个简单的主机名,或者是一个域名。然而,返回的名字必定可以在gethostbyname()和WSAAsyncGetHostByName()中使用。
返回值:
如果没有错误发生,gethostname()返回0。否则它返回SOCKET_ERROR。应用程序可以通过WSAGetLastError()来得到一个特定的错误代码。
错误代码:
WSAEFAULT 名字长度参数太小。
WSANOTINTIALISED 在应用这个API前,必须成功地调用WSAStartup()。
WSAENTDOWN Windows Sockets实现检测到了网络子系统的错误。
WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行。
参见:gethostbyname(), WSAAsyncGetHostByName()
首先,#include <afxsock.h>最好加在stdafx.h
然后初始化
if (!AfxSocketInit())
{
AfxMessageBox("SOCKET初始化失败");
return FALSE;
}
然后注册用的SOCKET版本
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
结束的时候记得销毁
WSACleanup();
这就是最简单的SOCKET应用。
这样就可以得到你计算机的名称
一般我们需要的是另外的参量,比如IP,这个就需要下面两个参数了
一个hostent