套接字socket函数详解

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、创建套接字---socket()

SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

原型:

socket(

_In_int af,//通信发生的区域

_In_int type,//socket类型

_In_int protocol//该套接字使用的特定协议

);

二、绑定本地址和端口----bind()

原型:

bind(//没错返回0,否则返回SOCKET_ERROR

_In_SOCKET s,//套接字描述符

_In_reads_bytes_(namelen) const struct sockaddr FAR * name,//name是赋给套接字的本地地址名字,长度可变,结构随通信域不同而不同

_In_int namelen//表明name的长度

);

三、建立套接字连接-----connect()与accept()

原型:

int PASCAL FAR connect (

_In_ SOCKET s,//本地套接字描述符

_In_reads_bytes_(namelen) const struct sockaddr FAR *name,//name 指出说明对方套接字地址结构的指针

_In_ int namelen//表明name的长度

);

原型:

accept(//返回一个SOCKET类型的值,表示接收到的套接字的描述符,否则返回INVALID_SOCKET

_In_SOCKET s,

_Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR * addr,//客户的地址_Inout_opt_int FAR * addrlen//客户方套接字地址的长度(字节数)

);

四、监听连接---listen()

listen()必须在accept()之前调用

原型:

listen(

_In_SOCKET s,//标识一个本地已经建立的尚未连接的套接字号

_In_int backlog//标识请求队列的最大长度,用于限制排队请求的个数,最大为5.没有错误此函数返回0,否则返回SOCKET_ERROR

);

五、数据传输与接收----send()与recv()

原型:

send(

_In_SOCKET s,//已经连接的的本地套接字描述符

_In_reads_bytes_(len) const char FAR * buf,//缓冲区指针

_In_int len,//buffer长度

_In_int flags//是否发送带外数据

);

recv(

_In_SOCKET s,//已连接的套接字描述符

_Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf,//接收缓冲区

_In_int len,//接收缓冲区长度

_In_int flags//指定传输控制方式,如是否接收带外数据

);

六、输入/输出多路复用---select()

用来检测一个或多个套接字的状态。

七、关闭套接字---closesocket()

原型:

closesocket(

_In_SOCKET s

);

相关文档
最新文档