VC++网络编程WSAStartup和WSACleanup函数

一、WSAStartup函数

int WSAStartup
(
 WORD wVersionRequested,
 LPWSADATA lpWSAData
);

使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。该函数执行成功后返回0.例:假如一个程序要使用2.1版本的Socket,那么程序代码如下:

wVersionRequested = MAKEWORD( 2, 1 );
err = WSAStartup( wVersionRequested, &wsaData );

二、WSACleanup函数int WSACleanup (void);应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。

三 Socket接口的检索有关域名、通信服务和协议等Internet信息的数据库函数,如

gethostbyaddr、gethostbyname、gethostname、getprotolbyname
getprotolbynumber、getserverbyname、getservbyport。

1.gethostname()

「函数原型」

int PASCAL FAR gethostname (char FAR * name, int namelen);

「使用说明」

该函数可以获取本地主机的主机名,其中:

name:<输出>用于指向所获取的主机名的缓冲区的指针。

Namelen:<输入>缓冲区的大小,以字节为单位。

返回值:若无错误,返回0;否则,返回错误代吗。

2.gethostbyname()

「函数原型」

struct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name);

「使用说明」

该函数可以从主机名数据库中得到对应的“主机”。

该函数唯一的参数name就是前面调用函数gethostname()得到的主机名。若无错误,刚返回一个指向hostent结构的批针,它可以标识一个“主机”列表。

时间: 2024-09-21 22:35:42

VC++网络编程WSAStartup和WSACleanup函数的相关文章

基于Winsock API的VC网络编程实战

随着计算机信息技术的飞速发展,互联网与人类社会的工作.生活越来越紧密相关,它已 经成为人类获取.交流信息的重要途径和手段.所以当前对于开发人员来说,网络编程已是 必备的技能.本实例详细介绍了如何利用Winsock API编写网络应用程序. 一.实现 方法 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型.在这种 方案中客户应用程序向服务器程序请求服务.一个服务程序通常在一个众所周知的地址监听 对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的

MFC 网络编程 -- 总结 .

基于 TCP 的 socket 编程 /*服务器端程序流程:1.加载套接字库       WSAStartup2.创建套接字           socket3.将我们创建的套接字,绑定到本机地址的某一端口上     bind4.为套接字设置监听模式,准备客户请求                          listen5.等待客户请求到来.当请求到来,将接受连接请求,并返回一个新的对应于此次连接的套接字     accept6.用新返回的套接字和客户端进行通信              

基于TCP/IP协议的C++网络编程(API函数版)

源代码:http://download.csdn.net/detail/nuptboyzhb/4169959 基于TCP/IP协议的网络编程 定义变量--获得WINSOCK版本--加载WINSOCK库--初始化--创建套接字 --设置套接字选项--关闭套接字--卸载WINSOCK库--释放所有资源 整个程序架构分为两大部分,服务器端客户端. 服务器SOCKET程序流程: socket()→bind()→listen→accept()→recv()/send()→closesocket() 客户端

UNIX网络编程:fcntl函数

fcntl函数提供了与网络编程相关的如下特性: 非阻塞式I/O.  通过使用F_SETFL命令设置O_NONBLOCK文件状态标志,我们可以把一个套接字设置为非阻塞型. 信号驱动式I/O. 通过使用F_SETFL命令设置O_ASYNC文件状态标志,我们可以把一个套接字设置成O_ASYNC,一旦其状态发生变化,内核就产生一个SIGIO信号. F_SETOWN命令允许我们指定用于接收SIGIO和SIGURG信号的套接字属主(进程ID或进程组ID).其中SIGIO信号是套接字被设置为信号驱动式I/O型

UNIX网络编程:I/O复用:select和poll函数

我们看到TCP客户同时处理两个输入:标准输入和TCP套接字.我们遇到的问题是就在客户阻塞于(标准输入上)fgets调用,服务器进程会被杀死.服务器TCP虽然正确的给客户TCP发送了一个FIN,但是既然客户进程正阻塞于从标准输入读入的过程,它将看不到这个EOF,直到从套接字读时为止(可能额已过了很长时间).这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已准备好被读入,或者描述符已能承接更多的输出),它就通知进程.这个能力称为I/O复用,是由s

socket-刚学linux网络编程,有个问题,listen( )函数可以用来监听其他电脑的端口吗?

问题描述 刚学linux网络编程,有个问题,listen( )函数可以用来监听其他电脑的端口吗? 如果可以是不是可以用这样的流程,先socket()创建描述符, 然后再bind()绑定一个IP地址跟端口? 解决方案 实在是没看懂你的需求 解决方案二: listen是侦听本机的端口,只有服务器端才需要这么做,你想监听其他主机,就需要在局域网路由器等上面做流量监控 解决方案三: 可以,基于socket的编程,只要绑定对IP地址就可以了.

C语言中socket相关网络编程函数小结_C 语言

C语言socket()函数:建立一个socket通信头文件: #include <sys/types.h> #include <sys/socket.h> 定义函数: int socket(int domain, int type, int protocol); 函数说明:socket()用来建立一个新的socket, 也就是向系统注册, 通知系统建立一通信端口. 参数domain 指定使用何种的地址类型, 完整的定义在/usr/include/bits/socket.h 内, 底

网络编程-socket编程中的accept函数

问题描述 socket编程中的accept函数 一个简单的客户/服务器的实现中,connect成功了,但是accept失败,它的返回值为0,这是怎么回事? 解决方案 已解决,原来是其中 = 的运算级别问题,加了个括号就行了,多谢楼上各位! 解决方案二: 名称 accept() 接收一个套接字中已建立的连接 使用格式 #include <sys/types.h> #include <sys/socket.h> int accept(int sockfd,struct sockaddr

网络编程中的read,write函数

关于TCP/IP协议,建议参考Richard Stevens的<TCP/IP Illustrated,vol1>(TCP/IP详解卷1). 关于第二层面,依然建议Richard Stevens的<Unix network proggramming,vol1>(Unix网络编程卷1),这两本书公认是Unix网络编程的圣经. 至于第三个层面,UNP的书中有所提及,也有著名的C10K问题,业界也有各种各样的框架和解决方案,本人才疏学浅,在这里就不一一敷述.   本文的重点在于第二个层面,