网络编程:信息传输一般会有两步,一是发送,一是接收。
socket 基础应用,先创建一个客户端,然后创建一个服务器端。客户端负责发送消息和接收服务器发过来的消息,服务器端负责接收客户端发送过来的消息和发送消息到客户端。
客户端
# 客户端
import socket
client = socket.socket() # 声明 socket 类型,同时生成 socket 连接对象
# <socket.socket fd=496, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
print(client)
client.connect(("localhost", 7894))
# <socket.socket fd=496, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,
# laddr=('127.0.0.1', 59049), raddr=('127.0.0.1', 7894)>
print(client)
client.send(b"Hello World!----from client")
data = client.recv(1024) # 设置接收的长度,1024字节 1K
print("recv:", data)
client.close()
服务器端
# 服务器端
import socket
server = socket.socket()
# <socket.socket fd=508, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
print(server)
server.bind(("localhost", 7894)) # 绑定要监听端口
server.listen() # 监听端口
# socket.socket fd=516, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,
# laddr=('127.0.0.1', 7894)> 监听的端口
print(server)
print("等待接听中-----")
# conn 是客服端连过来而在服务器端为其生成的一个连接实例
conn, addr = server.accept() # 等待传入信息
# conn =<socket.socket fd=568, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,
# laddr=('127.0.0.1', 7894), raddr=('127.0.0.1', 59049)>
# addr = ('127.0.0.1', 59049) 客户端监听的地址,从这个端口发给客户端
print(conn, addr)
print("接听成功------")
data = conn.recv(1024) # 设置接受的信息长度 1024字节
print("recv:", data)
conn.send(data.upper()) # 设置返回给客户端的信息
server.close() # 默认监听一次就退出了