通信
说通信,也就是两个py文件之间的数据交互
先建两个py文件,一个是Server端
import socket #调用socket模块 sk = socket.socket() #为这个模块的方法重命名,为的是方便使用 sk.bind(('127.0.0.1',8080)) #然后指定一个IP地址,一个端口 127.0.0.1是本地回环地址 sk.listen() # 开始监听 # 通常端口会被系统占用一些 所以习惯使用8080之后的端口 conn,addr = sk.accept() #接受别人的通讯请求 connection 连接 address 地址 ret = sk.recv(1024) # 接收别人的信息 1024指的是接收的最大字节数 这也是最大值了 print(ret) #打印出别人说话内容 conn.send(b'hi') #进行回话 conn.close() #关闭连接 sk.close() #关闭服务
然后建一个Client端
import socket sk = socket.socket() sk.connect(('127.0.0.1',8080)) #连接目标的地址和端口 sk.rend(b'hello') #发送内容 ret = sk.recv(1024) #接收 print(ret) #打印接收 sk.close() #关闭
然后启动Server端再启动Client端
然后Server端与Client端进行了一次短暂的对话
然后 再写一个能人为输入的连接
import socket sk = socket.socket() sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 避免服务重启的时候报address already in use sk.bind(('127.0.0.1',8088)) sk.listen() conn,addr = sk.accept() while True: #设定一个循环 让人可以循环通信 ret = conn.recv(1024).decode('utf-8') #对传来的信息进行解码 print(ret) if ret == 'bye': #给循环一个结束条件 break info = input('>>>') conn.send(bytes(info,encoding='utf-8')) #将传出的信息进行转码 因为中文会乱码 conn.close() sk.close()
import socket sk = socket.socket() sk.connect(('127.0.0.1',8088)) while True: info = input('>>>') sk.send(bytes(info,encoding='utf-8')) if info == 'bye': break ret = sk.recv(1024).decode('utf-8') print(ret) if ret == 'bye': sk.send(b'bye') break sk.close()
这样就能实现两端人为输入交流了
同时注意一定要进行转码和解码 不然中文会报错