1. 建立套接字: SOCKET socket(socket af, int type , int protocol); 出错码(SOCKET_ERROR).
af(address family):
指示地址族. Windows仅支持AF_INET(TCP/IP地址)
type:类型描述.
SOCK_STREAM:流Socket,定义一种可靠的,面向连接的服务,TCP.
SOCK_DGRAM:数据报Socket,定义一种无连接的报务, UDP.
SOCK_RAM:原始Socket.主要用于一些协议的开发和测试新的网络协议,对IP或者ICMP直接访问。IP欺骗 就需要用到。
SOCK_SEQPACKET:定序分组Socket. SOCK_RDM:可靠发送的消息。
protocol:套接字所用的协议。
IPPROTO_IP 0 IPPROTO_ICMP 1 IPPROTO_TCP 6 IPPROTO_UDP 17 IPPROTO_RAW 255
改变Socket属性: int setsockopt(socket sock_id, int level, int optname, cont char FAR *optval, int *optlen);
sock_id: 标识一个套接字.
level: 选项定义的层次,目前仅支持SOL_SOCKET,IPPROTO_TCP层次。
optname: 需设置的选项.
optval: 指针,指向存放选项值的缓冲区.
optlen: 缓冲区的长度.
2. 绑定IP、端口: int bind(socket sock_id, struct sockaddr *local_addr, int addr_len);
sock_id: 本地的socket标识符
local_addr: 指向有本机IP、端口号等信息的sockaddr类型的指针。
addr_len: sockaddr的长度。 常用sizeof(struct sockaddr).
3. 接受一个连接: int accept(socketsock_id, struct sockaddr *client_addr, int *addr_len);
sock_id: 本地socket标识符.
client_addr: 一个指向客户Socket地址结构的指针.
addr_len: 一个指向值为sizeof(struct sockaddr_in)的整型的指针变量.
4. 与远程服务器建立一个TCP连接: int connect(socketsock_id, struct sockaddr *serv_addr, int addr_len);
sock_id: 发出请求的socket标识符.
serv_addr: 一个指向服务器socket地址结构的指针.
addr_len: 服务器的socket地址长度.
5. 监听是否有服务请求: int listen(socket sock_id, int quelen);
sock_id: 本地的socket标识符.
quelen: 请求队列中运行的最大请求数。
6.面向连接数据传输: int send(socket sock_id, const char FAR *buffer, int buff_len, int flags); //可控缓冲发送
sock_id: 本地socket标识符.
buffer: 一个指向发送缓冲区的指针.
buff_len: 发送缓冲区的大小.
flags: 调用的执行方式. --0
MSG_OOB 0x1 //带外数据,也称为TCP紧急数据.
MSG_DONTROUTE 0x4 //不要将包路由出去.
int recv(socket sock_id, const char FAR *buffer, int buff_len, int flags); //可控缓冲接收
sock_id: 发出请求的socket标识符.
buffer: 一个指向接收缓冲区的指针.
buff_len: 接收缓冲区的大小.
flags: 指定调用方式. --0
MSG_OOB 0x1 //带外数据,也称为TCP紧急数据.
MSG_PEEK 0X2 //使有用的数据复制到缓冲区内,但并不从系统缓冲区内删除。
7.不面向连接数据传输: int sendto(socket sock_id, cont char FAR *buffer, int buff_len, int flags, const struct sockaddr FAR *to, int to_len);
to: 指针, 指向目的套接字的地址结构(SOCKADDDR 结构).
to_len: 所指地址结构的长度.
int recvfrom(socket sock_id, cont char FAR *buffer, int buff_len, int flags, const struct sockaddr FAR *from, int from_len);
from: 指针, 用来接收发送方套接字地址结构信息.
from_len: 指向SOCKADDR地址的长度.
8. 关闭一个套接字: int closesocket(socket sock_id);
禁止在一个套接字上进行数据的接收与发送: int shutdown(socket sock_id, int how);
how: 用于描述禁止哪些操作.
取值: SD_REVIEVE: 不允许再调用接收函数.
SD_SEND: 不允许再调用发送函数.
SD_BOTH: 取消连接两端的收发操作.