client2:
# encoding: utf8
# 表示当前的文件默认使用 gbk 编码
# 编码方式和解码方式要保持一致
# 导入套接字模块 socket
import socket
import threading
# 接收数据的线程
def reciver_thread(client):
while True:
# 不断的打印接收到的数据
print(client.recv(100).decode())
# main 函数,为主模块时执行
def main():
# 1. 创建一个用于网络连接的套接字,使用 TCP 协议
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 等待客户端的连接
client.connect(("127.0.0.1", 0x1616))
threading.Thread(target=reciver_thread, args=(client,)).start()
# 3. 和客户端使用 send recv 进行交互
while True:
s = input(">> ")
# 发送的数据必须是 bytes 类型的,需要编码
client.send(s.encode())
if __name__ == "__main__":
main()
server2:
# 导入套接字模块 socket
import socket
import threading
# 接收数据的线程
def reciver_thread(client):
while True:
# 不断的打印接收到的数据
print(client.recv(100).decode())
# main 函数,为主模块时执行
def main():
# 1. 创建一个用于网络连接的套接字,使用 TCP 协议
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定套接字到执行的 ip 和 端口,必须是元组
server.bind(("127.0.0.1", 0x1616))
# 3. 设置套接字为监听状态,同一时刻能接收的数量
server.listen(socket.SOMAXCONN)
# 4. 等待客户端的连接
client, address = server.accept()
threading.Thread(target=reciver_thread, args=(client,)).start()
# 5. 和客户端使用 send recv 进行交互
while True:
s = input(">> ")
# 发送的数据必须是 bytes 类型的,需要编码
client.send(s.encode())
if __name__ == "__main__":
main()