Socket函数参数说明
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当函数成功调用时返回主机信息 失败时返回 NULL(空值) 5、Bind 函数 指定本地 IP 地址所使用的端口号时候使用 [声明] int bind ( SOCKET s , const struct sockaddr FAR *addr , int namelen ); [参数] s - 指向用 Socket 函数生成的 Socket Descrīptor addr - 指向 Socket 地址的指针 namelen - 该地址的长度. [返回值] 当函数成功调用时返回 0 调用失败时返回 SOCKET_ERROR 6、connect 函数 用于与服务器建立连接,发出连接请求,必须在参数中指定服 务器的 IP 地址和端口号 [声明] int connect (SOCKET s , const struct sockaddr FAR *name , int namelen ); [参数] s - 指向用 Socket 函数生成的 Socket Descrīptor
[返回值] 当函数成功调用时返回一个新的 SOCKET(Socket Descrīptor) 失败时返回 INVALID_SOCKET. 3、inet_addr 函数 把好象"xxx.xxx.xxx.xxx"的 10 进制的 IP 地址转换为 32 位整数 表示方法 [声明] unsigned long inet_addr ( const char FAR *cp ); [参数] cp - 指向用"xxx.xxx.xxx.xxx"的 10 进制来表示的 IP 地址字符 串的指针 [返回值] 当函数成功调用时返回用 32 位整数表示的 IP 地址(按网络字 节排列顺序) 失败时返回 INADDR_NONE. 4、gethostbyname 函数 可以从主机名获取主机资料. [声明] struct hostent FAR * gethostbyname ( const char FAR *name ); [参数] name - 指向主机名字符串的指针 [返回值]
利用 Socket 进行接受数据. [声明] int recv ( SOCKET s , char FAR *buf , int len , int flags ); [参数] s - 指向用 Socket 函数生成的 Socket Descrīptor buf - 接受数据的缓冲区(数组)的指针 len - 缓冲区的大小 flag - 调用方式(MSG_PEEK 或 MSG_OOB) [返回值] 成功时返回收到的字节数. 如果连接被中断则返回 0 失败时返回 SOCKET_ERROR 9、sendto 函数 利用 Socket 进行发送数据. [声明] int sendto ( SOCKET s , const char FAR *buf , int len , int flags , const struct sockaddr FAR *to , int token ); [参数] s - 指向用 Socket 函数生成的 Socket Descrīptor buf - 接受数据的缓冲区(数组)的指针 len - 缓冲区的大小 flag - 调用方式(MSG_DONTROUTE , MSG_OOB)
同样,在错误时返回-1,并设置全局错误变量 errno。
定 那 个 地 址 在 那 个 端 口 呼 叫 你 )。 在 它 的 地 址 传 递 给 accept 之 前,addrlen 是个局部的整形变量,设置为 sizeof(struct sockaddr_in)。 accept 将不会将多余的字 节给 addr。如果你放入的少些,那么它会通过改 变 addrlen 的值反映出来。
Socket 函数参数说明
1、WSAStartup 函数 用于初始化 Winsock [声明] int WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData); [参数] wVersionRequested - 要求使用 Winsock 的最低版本号 lpWSAData - Winsock 的详细资料 [返回值] 当函数成功调用时返回 0 失败时返回非 0 的值 2、socket 函数 用于生成 socket(soket Descrīptor) [声明] SOCKET socket(int af,int type,int protocol); [参数] af - 地址家族(通常使用:AF_INET) type - socket 的种类 SOCK_STREAM : 用于 TCP 协议 SOCK_DGRAM : 用于 UDP 协议 protocol - 所使用的协议
name - 指向服务器地址的指针 namelen - 该地址的长度. [返回值] 当函数成功调用时返回 0 调用失败时返回 SOCKET_ERROR 7、select 函数 可以用于调查一个或多个 SOCKET 的状态. [声明] int select ( int nfds , fd_set FAR *readfds , fd_set FAR *writefds , fd_set FAR *exceptfds , const struct timeval FAR *timeout ); [参数] nfds - 在 WINDOWS SOCKET API 中该参数可以忽略,通常赋 予 NILL 值 readfds - 由于接受的 SOCKET 设备的指针 writefds - 用于发送数据的 SOCKET 设备的指针 exceptfds - 检查错误的状态 timeout - 超时设定 [返回值] 返回大于 0 的值时,表示与条件相符的 SOCKET 数 返回 0 表示超时 失败时返回 SOCKET_ERROR 8、recv 函数
(send()) 和接收 ( recv()) 数据。这就是这个过程! 函数是这样定义的:
Байду номын сангаас
#include <sys/socket.h>
int
accept(int
sockfd,
void
*addr,
int
*addrlen); sockfd 相当简单,是和 listen() 中一样的套接字描
述符。addr 是个指 向局部的数据结构 sockaddr_in 的指针。这是要求接入的信息所要去的地 方(你可以测
to - 指向发送方 SOCKET 地址的指针 token - 发送方 SOCKET 地址的大小 [返回值] 成功时返回已经发送的字节数. 失败时返回 SOCKET_ERROR
10、accept()函数 准备好了,系统调用 accept() 会有点古怪的地方的!
你可以想象发生 这样的事情:有人从很远的地方通过一
个你在侦听 (listen()) 的端口连接 (connect()) 到你 的机器。它的连接将加入到等待接受 (accept()) 的队列 中。你调用 accept() 告诉它你有空闲的连接。它将返回 一个新的套接字文 件描述符!这样你就有两个套接字了,
原来的一个还在侦听你的那个端口, 新的在准备发送