从线程调用时,Python 套接字 accept() 不起作用

纳特什·巴特

在以下代码中第一次执行方法期间发生连接,但是从线程内第二次执行函数开始,accept() 函数不接受任何函数,它只是停留在提示处,即使我从其他本地设备连接。任何帮助都会非常有帮助。这是代码。我对线程真的很陌生。所以请纠正我的错误并对我的代码中的任何错误进行完整的解释。

def serverwaiter():
    myip = "192.168.1.2";
    port = 6027;
    s = socket.socket();
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1);
    s.bind((myip, 6027));
    s.listen(10);
    print("My ip  :- {}".format(myip)) ;
    cobj , addr = s.accept() ;
    mythread = threading.Thread(target = serverwaiter, name = "TCP connection waiter {}".format(threading.active_count()-1))
    threads.append((cobj,addr)) ;
    mythread.start() ;
    print("Connected to {}".format(addr[0])) ;
    data = cobj.recv(1024) ;
    print("Host {} sent data = {}".format(addr, data));

    while(len(data)!=0):
        print("Waiting for Data from {}".format(addr[0])) ;
        data = cobj.recv(1024) ;
        data = data.decode() ;
        print("Host {} sent data = {}".format(addr ,data)) ;

serverwaiter() ;
马克·托洛宁

分拆线程只是为了服务客户端。现在,每次客户端连接时,您都在启动另一台服务器。试试这个:

import socket
import threading

def serverwaiter():
    port = 6027
    s = socket.socket()
    s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    s.bind(('',6027))
    s.listen(10)
    while True:
        cobj,addr = s.accept()
        mythread = threading.Thread(target=client,name='TCP client {}'.format(threading.active_count()-1),args=(cobj,addr))
        mythread.daemon = True # So client threads die on main thread exit.
        mythread.start()

def client(cobj,addr):
    print('Connected to',addr)
    while True:
        data = cobj.recv(1024)
        if not data: break
        print('Host {} sent data = {}'.format(addr,data.decode()))
    cobj.close()

serverwaiter()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python套接字在主机和VM之间不起作用

来自分类Dev

Python异步套接字接收不起作用

来自分类Dev

Python套接字在主机和VM之间不起作用

来自分类Dev

首次连接后Python UDP套接字不起作用

来自分类Dev

JAVA-使用套接字和线程接收对象不起作用

来自分类Dev

无法关闭侦听套接字以从单独的线程中止accept()/ select()

来自分类Dev

在关闭的 unix 套接字上杀死 socket.accept() 调用

来自分类Dev

套接字超时不起作用

来自分类Dev

套接字编程不起作用

来自分类Dev

套接字超时不起作用

来自分类Dev

Java套接字超时不起作用

来自分类Dev

Android中的多线程服务器套接字,可从连接的客户端接收图像-不起作用

来自分类Dev

套接字连接的单例类不起作用

来自分类Dev

套接字获取HTML响应不起作用

来自分类Dev

PHP / Java套接字通信不起作用

来自分类Dev

亚行套接字不起作用和守护进程

来自分类Dev

Spark Streaming套接字流示例不起作用

来自分类Dev

示例套接字应用程序不起作用

来自分类Dev

Boost套接字读取功能不起作用

来自分类Dev

在Store App中创建套接字连接不起作用

来自分类Dev

套接字获取HTML响应不起作用

来自分类Dev

Android套接字客户端readUTF不起作用

来自分类Dev

套接字接收后的 Memcpy 不起作用

来自分类Dev

在套接字上设置超时不起作用

来自分类Dev

阻塞 TCP 套接字超时不起作用

来自分类Dev

Unix套接字卡在accept()上

来自分类Dev

SSL_accept()不起作用

来自分类Dev

套接字和线程python

来自分类Dev

套接字和线程python