windows下socket常用API

一.WinSock DLL

1.初始化WinSock DLL

int WSAStartup(

WORD wVersionRequested,              //调用者能使用的Windows Socket支持的最高版本。高位指定副版本,低位指定主版本号

LPWSADATA lpWSAData                   //指向WSADATA的指针,用于接收Windows Socket的实现细节

);

//该函数在一个进程中初始化WS2_32.dll的使用

2.释放WinSock DLL资源

int WSACleanup(void);

 

二.套接字

1.创建套接字

SOCKET socket(

int af,                                               //地址家族说明

int type,                                          //新套接字类型说明

int protocol                                     //套接字使用协议,特定于所表示的地址家族,0表示默认的协议

);

2.从容关闭套接字

int shutdown(

SOCKET s,                        //套接字描述符

int how                            //描述不在允许什么类型操作的标志

);

3.关闭套接字

int closesocket(

SOCKET s

);

 

三.服务器端

1.绑定

int bind(

SOCKET s,                                                          //一个未绑定套接字的描述符;

const struct sockadd*name,                             //从SOCKADDR结构分配套接字的地址

int namelen                                                      //name所包含的字节长度,以字节计

);

2.监听

int listen(

SOCKET s,                                    //表示一个已绑定但并未连接的套接字

int backlog                                   //待觉连接队列的最大长度

);

listen函数将套接字置入监听状态,等候进入的连接

3.接收

SOCKET accept(

SOCKET s,                                      //一个用listen函数置入监听状态的套接字描述符,accept函数返回的套接字才是真正建立了连接

struct sockaddr*addr,                   //可选的指针,指向用于接收连接实体的缓冲区

int*addrlen                                   //可选的指针,指向一个包含addr长度的整数

);

//accept函数允许一个套接字上接受客户连接

 

 

四.客户端

1.创建连接

int connect(

SOCKET s,                                                                //标定一个未绑定套接字的描述符

const struct sockaddr*name,                                   //应与之建立连接的套接字名称

int namelen                                                              //名称的长度

);

//connect函数建立一个到指定套接字的链接

 

五.数据传输

1.发送数据

int send(

SOCKET s,                  //标识一个已经建立连接套接字的描述符

const char*buf,         //包含待传输数据的缓冲区

int len,                       //buf中数据的长度

int flags                    //指定调用执行方式的指示器 

);

//send函数在一个已建立连接的套接字上发送数据

2.发送数据到

int sendto(

SOCKET s,                                              //表示一个可能已连接的标示符

const char*buf,                                     

int len,

int flags,

const struct sockaddr*to,                     //可选的指针,指向目标套接字的地址

int tolen                                 

);

3.接收数据

int recv(

SOCKET s,                    //标识一个已建立连接套接字的描述符

char*buf,                     

int len,

int flags

);

//resv函数接收从一个已连接或绑定的套接字上获取传来的数据。

4.接收数据来自

int recvfrom(

SOCKET s,

char *buf,          //接收传来的数据的缓冲区

int len,

int flags,

struct sockaddr*from,                                 //可选的指针,指向一个在返回时保存源地址的缓冲区

int*fromlen                                                   

);

 

六.套接字地址信息

1.获取对方的套接字地址信息

int getpeername(

SOCKET s,

struct sockaddr*name,

int*namelen

);

//getpeername函数获取与一个套接字相连接的计算机的名称

2.获取本地的套接字地址信息

int getsockname(

SOCKET s,                                                                 //标识一个已连接的套接字的描述符
struct sockaddr FAR* name,                                     //用于获取本地的套接字socketaddr结构

int FAR* namlen                                                        //  指向名称结构尺寸,以字节计

);

//getsockname函数获取本地socket名称

 

七.其他

1.获取最近的错误代码

int WSAGetLastError(void);

posted on 2009-11-16 19:34  karying  阅读(1504)  评论(0编辑  收藏  举报

导航