socket 是服务端和客户端进行通信的,我们先来写一个服务端 服务端 import socket server = socket.socket() # 声明类型 server.bind(('localhost', 8888)) # 绑定ip地址和端口,是个元组 server.listen() # 开始
socket 是服务端和客户端进行通信的,我们先来写一个服务端
服务端
import socketserver = socket.socket() # 声明类型
server.bind(('localhost', 8888)) # 绑定ip地址和端口,是个元组
server.listen() # 开始监听
conn, addr = server.accept() # conn就是客户端连过来而在服务器端为其生成的一个连接实例,addr是他的地址在这里等数据发送过来
print(conn, addr)
data = conn.recv(1024) # 接收数据
print('recv:', data)
conn.send(data.upper()) # 将接收的数据变大写返回给
conn.close()
server.close()
客户端
import socketclient = socket.socket() # 声明协议类型,默认ipv4,http。同时生成socket连接对象
client.connect(('localhost', 8888)) # 连接服务器的ip 和端口,以元组的形式
client.send(b'hello world!') # 发数据,要以字节发送
data = client.recv(1024) # 接收数据
print('recv:', data)
client.close()
这样服务端和客户端就都写好了,先来启动服务端,在来启动客户端,查看控制台
服务端打印的数据如下
<socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8888), raddr=('127.0.0.1', 56520)> ('127.0.0.1', 56520)recv: b'hello world!'
客户端打印的数据如下
recv: b'HELLO WORLD!'接受中文
服务端
import socketserver = socket.socket() # 声明类型
server.bind(('localhost', 8888)) # 绑定ip地址和端口
server.listen() # 开始监听
conn, addr = server.accept() # conn就是客户端连过来而在服务器端为其生成的一个连接实例,addr是他的地址
data = conn.recv(1024) # 接收数据
print('recv:', data.decode())
conn.send(data.upper()) # 将接收的数据变大写返回给
客户端
import socketclient = socket.socket() # 声明协议类型,默认ipv4,http。同时生成socket连接对象
client.connect(('localhost', 8888)) # 绑定ip地址和端口,以元组的形式
client.send('我爱北京天安门'.encode('utf-8')) # 发数据有汉字加encode('utf-8')
data = client.recv(1024) # 接收数据
print('recv:', data.decode())
client.close()
服务端打印的数据如下
recv: 我爱北京天安门客户端打印的数据如下
recv: 我爱北京天安门和客户端连续通信
服务端
import socketserver = socket.socket()
server.bind(('localhost', 8888))
server.listen()
conn, addr = server.accept() # 放到while里面就卡住了, 因为和一个通完一句话之后,会等另一个连接
while True:
data = conn.recv(1024) # 接收数据
if not data: # 判断接收的数据为空就断开
break
print('recv:', data.decode())
conn.send(data.upper())
客户端
import socketclient = socket.socket()
client.connect(('localhost', 8888))
while True:
msg = input('>>').strip()
client.send(msg.encode('utf-8'))
data = client.recv(1024) # 接收数据
print('recv:', data.decode())
方法二
服务端
import socketserver = socket.socket()
server.bind(('localhost', 6969)) # 绑定要监听端口
server.listen(5) # 监听
print("我要开始等电话了")
while True:
conn, addr = server.accept() # 等电话打进来
print("电话来了")
while True:
data = conn.recv(1024)
print("recv:", data.decode())
if not data: # 客户端断开后返回上个while继续等
print("client has lost...")
break
conn.send(data.upper())
server.close()
客户端
import socketclient = socket.socket()
client.connect(('localhost', 6969))
while True:
msg = input(">>:").strip()
if len(msg) == 0: # 输入的为空
continue
client.send(msg.encode("utf-8"))
data = client.recv(10240)
print("recv:", data.decode())
client.close()