Socket 学习笔记(一)
Socket 又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求,是主机间或者一台计算机上的进程剑可以通讯。
所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口
套接字
在任何类型的通信开始之前,网络应用程序都必须创建套接字
套接字最初是为了同一主机上的应用程序所创建,是得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信,这就是所谓的进程间通信(Inter Process Communication , IPC )
有两种类型的套接字:基于文件和面向网络的
1、基于文件的
家族名:AF_UNIX
又名AF_LOCAL,在POSIX1.g标准中指定,它代表地址家住(addressfamily) :UNIX. 其他比较就的系统可能会将地址家族表示成域 (domian)或者协议家族(protocolfamily),
并使用其缩写PF而非AF.
2、面向网络的
家族名:AF_INET
或者地址家族:因特网。另一个地址家族AF_INET6用于第六版因特网协议(IPv6)寻址。
面向连接的套接字与无连接的套接字:
1、面向连接的套接字
TCP套接字的名字SOCK_STREAM
特点:可靠,开销大
在进行通信之前必须先建立一个连接,改连接的通信提供序列化的、可靠和不重复的数据交付、,而没有记录边界。这种类型的通信也称为虚拟电路或者六套接字。实现这种连接类型的主要协议是传输控制协议(TCP)
为了创建TCP套接字,必须使用SOCK_STREAM作为套接字类型。
2、无连接的套接字
UDP套接字的名称SOCK_DGRAM
特点:不可靠(局域网内是比较可靠),开销小
与虚拟电路形成鲜明对比的是数据报类型的套接字,他是一种无连接的套接字。
在通信开始之前并不需要建立连接。此时,在数据传输过程中并无法保障它的顺序性、可靠性或重复性。
数据报确实保存了记录边界,这就意味着消息是整体发送的,而并非先分成多个片段实现这种连接类型的主要协议是用户数据报协议(UDP)
为了创建UDP套接字必须使用SOCK_DGRAM作为套接字类型。
socket函数创建套接字的语法如下:
Socket.cocket( family , type , proto )
参数:
family:套接字家住可以使AF-UNIX或者AF_INET.
Type:套接字类型可以根据是面向连接的还是非连接分为 SOCK_STREAM 或者 SOCK_DGRAM.
Protocol:一般不填默认为0.
socket对象(内建)方法


浙公网安备 33010602011771号