Python应用最广泛的要数web方面了。因此,socket显得十分重要。
要使用socket,必须引入socket模块,因此在Python脚本开头先写入
1 import socket
学过socket的都知道,就是客户端和服务端的通信。
因此新建client.py和server.py文件。
先编写server.py文件:
1 import socket 2 3 # 创建 TCP 协议的套接字。 4 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 5 # 连接的 ip 地址。 6 host = '127.0.0.1' 7 # 目标端口。 8 port = 12345 9 address = ('127.0.0.1',12345) 10 # 监听目标地址上的端口。 11 server.bind(address) 12 # 最多同时接受 1 个连接请求。 13 server.listen(1) 14 15 while True: 16 # 接受连接。若没有连接则阻塞进程 17 # server.accept() 返回的是一个 tuple。 18 # clientSocket, clientAddress = server.accept() 19 # 等价于 20 # temp = server.accept() 21 # clientSocket = temp[0] 22 # clientAddress = temp[1] 23 clientSocket,clientAddress = server.accept() 24 # 接收并进行解码。1024 指的是缓冲区的大小。 25 print(clientSocket.recv(1024).decode()) 26 # 将字符串编码并发回客户端。 27 # 等价于 28 # clientSocket.sendall(b'reply') 29 clientSocket.sendall('reply'.encode()) 30 # 关闭与客户端的连接。 31 clientSocket.close() 32 else: 33 # 关闭服务端监听端口的 socket。 34 server.close()
接下来编写client.py文件:
1 import socket 2 3 # 创建 TCP 协议的套接字。 4 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 5 # 连接目标端口,连接失败将引发 ConnectionRefusedError 类型的异常。 6 client.connect(('127.0.0.1',12345)) 7 # 将字符串编码后发送至服务端。 8 # 等价于 9 # client.send(b'hello') 10 client.send('hello'.encode()) 11 # 接收服务端的内容并解码输出。 12 print(client.recv(1024).decode()) 13 # 关闭与服务端连接的套接字。 14 client.close()
编写完毕后,就可以运行了。
在server.py文件右键运行,接着在client.py文件右键再运行即可。
运行效果: