在以下代码中第一次执行方法期间发生连接,但是从线程内第二次执行函数开始,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] 删除。
我来说两句