python3网络编程
网络编程(定义)
网络编程的本质就是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机,数据传递本身
没有多大难度,不就是把一个设备中的数据发送给一个设备,然后接收另一个设备的反馈的数据。
网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈
IP地址和域名
现实生活中,如果要打电话则需要知道对应人的电话号码,如果要寄信则需要知道收信人的地址。在网络中
也是这样,需要知道一个设备的位置。则需要使用该设备的IP地址,具体的链接过程由硬件实现。一般是IPv4
端口概念
为了在一台设备上可以运行多个程序,人为的设计了端口(port)的概念就像公司的分机号码
规定一个设备有216个,也就是65536个端口,每个端口对应一个唯一的程序。
python网络编程的话就要用到一个 socket(称作为:套接字)
进入cmd输入 pip install socket 进行下载(最新版本)
上面对网路编程介绍了这么多,下面来写个实例
#创建主叫方(字符发送时需要编码) import socket import threading #建立客户套接字 c=socket.socket(socket.AF_INET,socket.SOCK_STREAM) print('创建客户套接字') c.connect(('00.00.00.00',0000))#链接对方,不成功抛出异常(自己的ip) print('我已链接到服务') #send发送的数据要编码 encode()编码 def myreve(c): while True: #1024b=1k #3b=1字节(所以字符在300以内) msg=c.recv(1024)#当没有消息的时候休息,阻塞 print(msg.decode())#解码 threading._start_new_thread(myreve,(c,)) while True: msg=input() c.send(msg.encode())#编码 #被叫方(跟主叫方差不多) ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM) print('建立服务套接字') #服务套接字绑定端口号,绑定主机 print('绑定端口和主机') ss.bind(('localhost',9999)) #建立最大链接数,超过排队 ss.listen(5) #接受客户套接字请求 c=ss.accept() print('某个用户链接到我了') #线程 函数 def myreve(c): while True: msg=c.recv(1024)#当没有消息的时候休息,阻塞 print(msg.decode())#解码 threading._start_new_thread(myreve,(c[0],)) while True: msg=input() c[0].send(msg.encode())#编码