python socket基本连接功能实现
socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信
在应用中,要写两个程序来通信,一个是服务器端程序,一个是客户端程序
服务器端程序:
import socket # 建立一个服务端 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建一个socket server.bind(('localhost',9090)) #将socket绑定到监听的端口 server.listen(5) #开始监听 5表示可以使用五个链接排队 conn,addr = server.accept() #等待链接,conn是建立连接后,获取的连接socket,我们可以用来发送和接受消息, # 为什么不用上边的那个socket呢,因为上边的那个socket没有连接另一端的地址的信息, # 所以只有接收到消息后,才能建立当前的这个socket;addr就是客户服务器地址信息 data = conn.recv(1024) #接收数据,data是byte类型 print('recive:',data.decode()) #打印接收到的数据 conn.sendall('收到请求'.encode('utf-8'))#发送数据
客户端程序
import socket# 客户端 发送一个数据,再接收一个数据 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #声明socket类型,同时生成链接对象 #client.bind(('localhost',9091)) #绑定要监听的端口,这一步可以不需要,如果绑定了, # 那么客户服务器就会用这个固定的端口发送消息,如果没绑定,端口就是随机的用 client.connect(('127.0.0.1',9090)) #建立一个链接,连接到本地的9090端口 msg = "来自请求服务器的--请求" client.send(msg.encode('utf-8')) #发送一条信息 python3 只接收btye流 data = client.recv(1024) #接收一个信息,并指定接收的大小 为1024字节 print('recv:',data.decode()) #输出接收到的信息
python 文档:https://docs.python.org/3/library/socket.html#socket-objects