1.1.3套接字 Socket 概念:套接字看成是网络环境下UNX文件访问 机制的一般化,文件描述字一套接字描述字,是 种网络AP。 使用:类似文件描述字: *打开文件→文件描述字→使用描述字 write/read *创建套接字→套接字描述字(→地址绑定和 TCP连接)→使用描述字 write/read ■套接字对( Socket pair):标识一个TcP连接, 定义连接两个端点的四元组。 套接字机制基于客户一服务器模模式
1.1.3 套接字Socket 概念:套接字看成是网络环境下UNIX文件访问 机制的一般化,文件描述字--套接字描述字,是 一种网络API 。 使用:类似文件描述字 : * 打开文件→文件描述字→使用描述字write/read * 创建套接字→套接字描述字( →地址绑定和 TCP连接) →使用描述字write/read 套接字对(Socket pair):标识一个TCP连接, 定义连接两个端点的四元组。 套接字机制基于客户—服务器模模式
1.2 Socket网络通信编程(C) 1.2.1套接字的创建与关闭 创建调用: socked= socket( pf, type, protoco socked:系统调用 socket()的返回值,整数, Socket描述字,或称 Socket号 ①pf( protocol family):协议族 PF INET:IPv4互联网协议 PF INET6:IPv6互联网协议 PFUNⅨX:UNⅨX内部地址,文件路径名 ②type:类型,应用程序指定通信服务类型 SOCK STREAM:流 socket SOCK DGRAM:数据报 socket
1.2 Socket 网络通信编程(C) 1.2.1 套接字的创建与关闭 创建调用: sockid:系统调用socket()的返回值,整数, Socket描述字,或称Socket号。 ① pf(protocol family) : 协议族 PF_INET:IPv4 互联网协议 PF_INET6:IPv6 互联网协议 PF_UNIX:UNIX内部地址,文件路径名 ② type: 类型, 应用程序指定通信服务类型 SOCK_STREAM: 流socket; SOCK_DGRAM: 数据报socket; sockid = socket (pf, type, protocol)
③ protocol协议 协议族 Socket类型 实际协议 表1.1 SOCK DGRAM UDP 参数 PF INET SOCK STREAM TCP 组 SOCK RAW IPv4 SOCK RAW ICMP SOCK DGRAM UDP PF⊥NET6 SOCK STREAM TCP SOCK RAW IPv6 SOCK RAW ICMPv6 当一一对应时, protoco可置为0,默认协议 S= socket( PF_INET, SOCK STREAM,o)--- CP 套接字关闭:cose(ckd
③ protocol 协议 表1.1 参数 组合 当一一对应时,protocol可置为0,默认协议. S = socket ( PF_INET, SOCK_STREAM, 0 ) ---TCP 套接字关闭: 协议族 Socket类型 实际协议 PF_INET SOCK_DGRAM UDP SOCK_STREAM TCP SOCK_RAW IPv4 SOCK_RAW ICMP PF_INET6 SOCK_DGRAM UDP SOCK_STREAM TCP SOCK_RAW IPv6 SOCK_RAW ICMPv6 close (sockid)
1.22绑定本地地址 将本地 socke地址(IP地址和端口号)与所创 建的 socket号联系起来,亦称 socke命名 绑定调用:[bind( socked, localaddr, addrlen ① socked: socket号; ② localaddr指向 socke地址结构的指针; ③ addrlen地址长度(字节)。 bind()成功返回0,失败返回-1 网络字节顺序:高价先存( big-endian): 128.10.2.30:低地址 高地址 80 OA 02 1E
1.2.2 绑定本地地址 将本地socket地址(IP地址和端口号)与所创 建的socket号联系起来, 亦称socket命名。 绑定调用: ① sockid :socket号; ② localaddr 指向socket地址结构的指针; ③ addrlen 地址长度(字节)。 bind()成功返回0,失败返回-1。 网络字节顺序: 高价先存( big-endian): 128.10.2.30 : 低地址 高地址 bind (sockid, localaddr, addrlen) 80 0A 02 1E
1.23建立连接 1.请求连接 客户端的动作,一般用于面向连接的流 socket 请求连接: connect (socked, destaddr, addrlen ① soc kid:本地 socket.号; ② destaddr:指向对方 socket地址结构的指针; ③ addrlen:指出对方 socket地址长度。 成功返回0,失败返回-1。 调用 connect()前可不调用bind(),内核负责 也可用于无连接方式,指明默认目的地址
1.2.3 建立连接 1. 请求连接 客户端的动作,一般用于面向连接的流socket。 请求连接: ① sockid :本地socket号; ② destaddr:指向对方socket地址结构的指针; ③ addrlen:指出对方socket地址长度。 成功返回0,失败返回 -1。 调用connect( )前可不调用bind( ),内核负责。 也可用于无连接方式,指明默认目的地址。 connect (sockid, destaddr, addrlen)