Py学习  »  Python

python套接字中同时发送和接收的问题

Little Coder • 4 年前 • 1914 次点击  

我希望通过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()
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133421
文章 [ 1 ]  |  最新文章 4 年前
Armali
Reply   •   1 楼
Armali    5 年前

服务器和客户端:

  • 不要把钥匙放在桌子上 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(…) (因此尝试使用服务器而不是客户端连接套接字)。

客户:

  • 不要尝试多次启动线程。