端口port由来
IP地址主要是确定网络上某个具体的主机具体数据通信主要是通过工作在计算机中的软件执行。当主机A向主机B发送信息时,具体会由主机B上哪个程序接收呢,由此计算机出现了端口port的概念,端口port主要用于区别不同软件的通信渠道,用于正确的将数据通过制定的端口渠道传输给对应的软件。
因此ip地址精确到具体的一台电脑,而端口精确到具体的程序。
Socket编程
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。
套接字
套接字的概念很简单,每台主机有一个唯一的主机地址标识,同时主机内还有标识自己进程的序号id,称作端口,将这两个标识符结合就构成了一个套接字(socket),这个套接字能唯一标识网络中的一个进程。(网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket, 又称为“套接字”。)
TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。
UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
4.4.1 TCP编程
4.4.1.1 建立TCP服务器连接的6个步骤
1、创建socket对象。调用socket构造函数:
基本语法: socket.socket(socket_family, socket_type, protocal=0)
参数:
socket_family: socket 地址家族, AF_UNIX/AF_LOCAL 或者 AF_INET
socket_type:socket 连接类型:1)面向连接的(SOCK_STREAM) 2)面向无连接的(SOCK_DGRAME) protocal:
传输协议,一般不用设置,使用默认值进行自动匹配就好
如果IP地址为 0.0.0.0 代表本机的任意一个IP 端口 0--1024 为系统保留
IP地址为localhost代表本地主机,指这台计算机,相对应的ip地址为127.0.0.1
3、绑定后,必须准备好套接字,以便接受连接请求: