TCP编程
原创...大约 1 分钟
TCP 接收数据
【示例】 接收数据(服务端)
from socket import *
server_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
server_socket.bind(("127.0.0.1", 8889))
server_socket.listen(5)
print("等待接收连接")
client_socket, client_info = server_socket.accept()
recv_data = client_socket.recv(1024)
print(f"收到信息:{recv_data.decode('gbk')},来自:{client_info }")
client_socket.close()
server_socket.close()
【示例】 接收数据(客户端)
from socket import *
client_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
client_socket.connect(("127.0.0.1", 8889))
client_socket.send("hello".encode("gbk"))
client_socket.close()
服务端和客户端持续通信
【示例】 服务端
from socket import *
server_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
server_socket.bind(("127.0.0.1", 8889))
server_socket.listen(5)
print("等待接收连接")
client_socket, client_info = server_socket.accept()
print("一个客户端连接成功")
while True:
recv_data = client_socket.recv(1024)
print(f"客户端说:{recv_data.decode('gbk')},来自:{client_info }")
if recv_data == "end":
break
msg = input("请输入:")
client_socket.send(msg.encode('gbk'))
client_socket.close()
server_socket.close()
【示例】 客户端
from socket import *
client_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
client_socket.connect(("127.0.0.1", 8889))
while True:
msg = input("请输入:")
client_socket.send(msg.encode('gbk'))
if msg == "end":
break
recv_data = client_socket.recv(1024)
print(f"服务器端说:{recv_data.decode('gbk')}")
client_socket.close()
结合多线程实现自由通信
【示例】 服务端
from socket import *
from threading import Thread
def recv_data():
while True:
recv_data = client_socket.recv(1024)
print(f"客户端说:{recv_data.decode('gbk')},来自:{client_info }")
if recv_data == "end":
break
def send_data():
while True:
msg = input("请输入:")
client_socket.send(msg.encode('gbk'))
if __name__ == "__main__":
server_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
server_socket.bind(("127.0.0.1", 8889))
server_socket.listen(5)
print("等待接收连接")
client_socket, client_info = server_socket.accept()
print("一个客户端连接成功")
t1 = Thread(target=recv_data)
t2 = Thread(target=send_data)
t1.start()
t2.start()
t1.join()
t2.join()
client_socket.close()
server_socket.close()
【示例】 客户端
from socket import *
from threading import Thread
def recv_data():
while True:
recv_data = client_socket.recv(1024)
print(f"服务器端说:{recv_data.decode('gbk')}")
def send_data():
while True:
msg = input("请输入:")
client_socket.send(msg.encode('gbk'))
if msg == "end":
break
if __name__ == "__main__":
client_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
client_socket.connect(("127.0.0.1", 8889))
t1 = Thread(target=recv_data)
t2 = Thread(target=send_data)
t1.start()
t2.start()
t1.join()
t2.join()
client_socket.close()
Powered by Waline v2.15.7