基本TCP套接字编程

来源:互联网 发布:linux查看硬件命令 编辑:程序博客网 时间:2024/05/19 22:47

基本套接字函数

基本TCP客户/服务器程序的套接字函数

socket函数

socket函数用于创建一个套接字描述符,定义在头文件sys/socket.h中:

/*若成功返回非负数整数(套接字描述符),若失败返回-1*/int socket(int family, int type, int protocol);
  • family参数指明协议族(协议族 VS 地址族):
family 说明 AF_INET IPv4协议 AF_INET6 IPv6协议 AF_LOCAL Unix域协议 AF_ROUTE 路由套接字 AF_KEY 密钥套接字
  • type参数指明套接字类型:
type 说明 SOCK_STREAM 字节流套接字 SOCK_DGRAM 数据报套接字 SOCK_SEQPACKET 有序分组套接字 SOCK_RAW 原始套接字
  • protocol参数指明某个协议类型,或者设为0,以选择给定familytype组合的系统默认值:
protocol 说明 IPPROTO_TCP TCP传输协议 IPPROTO_UDP UDP传输协议 IPPROTO_SCTP SCTP传输协议

注意并非所有的familytype组合都是有效的,下表给出了一些有效组合:

AF_INET AF_INET6 AF_LOCAL AF_ROUTE AF_KEY SOCK_STREAM TCP或SCTP TCP或SCTP 是 SOCK_DGRAM UDP UDP 是 SOCK_SEQPACKET SCTP SCTP 是 SOCK_RAW IPv4 IPv6 是 是

参数familytype还有其他值,例如Linux支持一个新的套接字类型SOCK_PACKET,支持对数据链路的访问。

connect函数

TCP客户端调用connect函数来建立与TCP服务器的连接:

#include <sys/socket.h>/*成功返回0,否则返回-1*/int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);