WinSockAPI相关函数

WinSock提供了许多套接字函数,它们并不代表协议的某一个层次,其实质就是一组编程接口,用户利用这些函数可以很容易地进行编程。
(1)socket函数
socket函数用于创建一个套接字。
语法:

为井研等地区用户提供了全套网页设计制作服务,及井研网站建设行业解决方案。主营业务为成都网站设计、网站建设、井研网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

SOCKET socket (
int af,       
int type,     
int protocol  
);

af:标识一个地址家族,通常为AF_INET。
type:标识套接字类型,如果为SOCK_STREAM,表示流式套接字;如果为SOCK_DGRAM,表示数据报套接字。
protocol:标识一个特殊的协议被用于这个套接字,通常为0,表示采用默认的TCP/IP协议。

(2)accpet函数
accpet函数用于接受客户端的连接请求。返回值是一个新的套接字,它对应于已经接受的客户端连接,对于该客户端的所有后续操作,都应使用这个新的套接字。
语法:

SOCKET accept (
SOCKET s,
struct sockaddr FAR* addr,  
int FAR* addrlen
);

s:是一个套接字,它应处于监听状态。
addr:是一个sockaddr_in结构指针,包含一组客户端的端口号、IP地址等信息。
addrlen:用于接收参数addr的长度。

(3)bind函数
bind函数用于将套接字绑定到一个已知的地址上。如果函数执行成功,返回值为0,否则为SOCKET_ERROR。
语法:

int bind (
SOCKET s,                          
const struct sockaddr FAR*  name,  
int namelen                        
);

s:   是一个套接字。
name:是一个sockaddr结构指针,该结构中包含了要绑定的地址和端口号。
namelen:确定name缓冲区的长度。
在定义一个套接字后,需要调用bind函数为其指定本机地址、协议和端口号。

例如,创建一个套接字s,将其绑定到3010端口上,其代码如下:

int port = 3010;
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sockaddr_in addr;
addr.sin_family = AF_INET; //内部网络协议TCP\UDP等
addr.sin_port = htons(port);  //端口号
addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(s,(LPSOCKADDR)&addr,sizeof(addr))==0)
{
MessageBox("成功");
}

(4)closesocket函数
closesocket函数用于关闭某个套接字。
语法:

int closesocket (
SOCKET s  
);

s:标识一个套接字。如果参数s设置有SO_DONTLINGER选项,则调用该函数后会立即返回,但此时如果有数据尚未传送完毕,会继续传递数据,然后才关闭套接字。

(5)connect函数
connect函数用于发送一个连接请求。如果函数执行成功,返回值为0,否则为SOCKET_ERROR。用户可以通过WSAGetLastError得到其错误描述。
语法:

int connect (
SOCKET s,
const struct sockaddr FAR*  name,  
int namelen
);

s:标识一个套接字。
name:套接字s想要连接的主机地址和端口号。
namelen:name缓冲区的长度。

(6)htons函数
htons函数将一个16位的无符号短整型数据由主机排列方式转换为网络排列方式。
语法:

u_short htons (
u_short hostshort  
);

hostshort:一个主机排列方式的无符号短整型数据。

(7)htonl函数
htonl函数将一个32位的无符号长整型数据由主机排列方式转换为网络排列方式。
语法:

u_long htonl (
u_long hostlong  
);

hostlong:一个主机排列方式的无符号长整型数据。

(8)inet_addr函数
inet_addr函数将一个由字符串表示的地址转换为32位的无符号长整型数据。
语法:

unsigned long inet_addr (
const char FAR * cp  
);

cp:一个表示IP地址的字符串。

(9)listen函数
listen函数用于将套接字置入监听模式。
语法:

int listen (
SOCKET s, 
int backlog  
);

s:套接字。
backlog:表示等待连接的最大队列长度。例如,如果backlog被设置为3,此时有4个客户端同时发出连接请求,那么前3个客户端连接会放置在等待队列中,第4个客户端会得到错误信息。

(10)recv函数
recv函数用于从连接的套接字中返回数据。
语法:

int recv (
SOCKET s,       
char FAR* buf,  
int len,        
int flags       
);

recv函数参数的说明如表18.5所示。
表18.5 recv函数参数说明
参数名称    参 数 描 述
S                  标识一个套接字
Buf              是接收数据的缓冲区
Len             是buf的长度
Flags            表示函数的调用方式,可选值如下:MSG_PEEK_用来查看传来的数据,在序列前端的数据会被复制一份到返回缓冲区中,但是这个数据不会从序列中移走MSG_OOB_用来处理Out-Of-Band数据

(11)select函数
select函数用来检查一个或多个套接字是否处于可读、可写或错误状态。
语法:

int select (
int nfds, 
fd_set FAR * readfds,               
fd_set FAR * writefds,              
fd_set FAR * exceptfds,             
const struct timeval FAR * timeout  
);

select函数参数说明如表18.6所示。
表18.6 select函数参数说明
参数名称       参数描述
nfds                没有实际意义,只是为了和UNIX下的套接字兼容
readfds           标识一组被检查可读的套接字
writefds           标识一组被检查可写的套接字
exceptfds        是被检查有错误的套接字
timeout            标识函数的等待时间

(12)send函数
send函数在已经建立连接的套接字上发送数据。
语法:

int send (
SOCKET s,              
const char FAR * buf,  
int len,               
int flags              
);

send函数参数说明如表18.7所示。
表18.7 send函数参数说明
参数名称     参数描述
s                    标识一个套接字
buf                是存放要发送数据的缓冲区
len                 标识缓冲区长度
flags              标识函数的调用方式

(13)WSAStartup函数
WSAStartup函数用于初始化WS2_32动态库。它应该是应用程序第1个调用的Windows Socket函数,用于确定Windows Socket使用的版本。
语法:

int WSAStartup (
WORD wVersionRequested,  
LPWSADATA lpWSAData  
);

wVersionRequested:标识调用者使用的Windows Socket的版本,高字节记录修订版本,低字节记录主版本。例如,如果Windows Socket的版本为2.1,则高字节记录1,低字节记录2。
lpWSAData:记录Windows Socket的详细信息。
下面的代码用于确定Windows Socket使用的版本。

WSADATA wsd;
WSAStartup(MAKEWORD(2,2),&wsd);

14)WSACleanup函数
WSACleanup函数与WSAStartup函数是相对的,用于终止使用WS2_32动态库。
语法:

int  WSACleanup (void);

(15)WSAAsyncSelect函数
WSAAsyncSelect函数用于将网络中发生的事件关联到窗口的某个消息中。
语法:

int WSAAsyncSelect (
SOCKET s, 
HWND hWnd, 
unsigned int wMsg, 
long lEvent 
);

WSAAsyncSelect函数参数说明如表18.8所示。
表18.8 WSAAsyncSelect函数参数说明
参数名称        参数描述
s                      标识套接字
hWnd              标识窗口句柄
wMsg              标识窗口消息
lEvent               标识网络中的事件

网站名称:WinSockAPI相关函数
网站链接:https://www.cdcxhl.com/article24/jjodce.html

成都网站建设公司_创新互联,为您提供网站维护网站设计公司企业建站网站收录电子商务企业网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计