网络编程
计算机网络是一些相互连接的自主计算机或设备的集合,它是计算机技术和通信技术相结合的产物。
网络协议
网络协议是网络中进行数据交换与传输所需要的规则、标准或约定,主要由语法(数据与信息的结构形式)、语义和同步(事件的实现顺序)三个要素组成。因七层模型过于复杂不实用,故简化为四层模型
地址与端口
地址就是ip地址,端口就是一些常用的端口。比如ftp协议端口号为21,http常用端口为80.本地主机叫做127.0.0.1.
套接字的使用
套接字是一种类文件对象,python有专门的socket库。服务器端需要建立一个socket对象,并等待客户端的连接。客户端使用socket对象与服务器端进行连接,一旦连接成功,客户端和服务端就可以通信了。
socket(family, type, proto)
- family:地址族,可选参数
用socket建立服务器端与客户端程序
python的socket模块可以建立服务器端程序也可以建立客户端程序。其原型是
socket(family, type, proto)
其参数含义是:
- family:地址族,可选参数。默认为AF_INET(IPV4),也可以是AF_INET6或AF_UNIX;
- type:socket类型,可选参数。默认为SOCK_STREAM(TCP协议),可用SOCKET_DGRAM(UDP协议)
- proto:协议类型,可选参数。默认为0
作为服务器端的socket对象主要有以下方法
而作为客户端只需要外加connect,跟bind所需要的参数类似
这部分实例看这篇博文
python|基于两个py文件的tcp通信(含实例源码)
用socket建立基于UDP协议的服务器与客户端程序
基于udp的是不是特别稳定的,因此步骤就简单了许多,主要两个方法
recvfrom(buffsize[,flags]) # bufsize 用来指定缓冲区大小
sendto(bytes,address)
这里的演示通过这个博文演示效果极佳:
python|基于两个py文件的udp通信(含实例源码)