[英]How to send and receive in python socket at the same time?
我想通過 Python 中的套接字同時發送和接收信息。
您可以從下面的代碼中看到,我使用了threading
但仍然無法正常工作。 我不知道是否有錯誤或我是否誤解了什么。
服務端代碼:
import socket
import threading as td# 導入 socket 模塊
def send():
while True: # 建立客戶端連接
send_text=input('send:')
c.send(send_text.encode('utf-8'))
def recv():
while True:
a=s.recv(1024).decode('utf8')
print('servwe:',a)
while True:
global t1
global t2
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
address=('0.0.0.0',9000) # 設置端口
s.bind(address) # 綁定端口
s.listen(5)
c,addr=s.accept()
print('client device:',addr)# 等待客戶端連接
t1=td.Thread(target=send())
t2=td.Thread(target=recv)
t1.start()
t2.start()
客戶-
import socket # 導入 socket 模塊
import threading as td
def recv():
global data
while True:
a=s.recv(1024).decode('utf8')
print('server:',a)
t1.start()
def send():
while True: # 建立客戶端連接
send_text=input('send:')
s.send(send_text.encode('utf-8'))
t1.start()
t2.start()
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
address=('192.168.68.115',9000)
s.connect(address) # 創建 socket 對象
t1=td.Thread(target=send())
t2=td.Thread(target=recv)
t1.start()
t2.start()
服務器和客戶端:
不要將socket.socket(socket.AF_INET,…
放入循環中。
你錯誤地寫了t1=td.Thread(target=send())
而不是t1=td.Thread(target=send)
(所以調用而不是傳遞線程函數)。
不要忽略斷開連接
while True: a=s.recv(1024).decode('utf8')
- 而是寫
while a:=s.recv(1024).decode('utf8'):
服務器:
=s.recv(1024).decode('utf8')
而不是=c.recv(1024).decode(…)
(所以試圖使用服務器而不是客戶端連接套接字)。客戶:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.