废话少说,记录笔记
非常简单,我要调用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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


posts - 12, comments - 0, trackbacks - 0, articles - 1

Copyright © 黄超