繁体   English   中英

TCP线程python

[英]TCP threaded python

我正在学习通过Python进行的一些网络连接,并提出了TCPServer Multithread的概念,因此我可以连接多个客户端。 问题是我只能连接一个客户端。

import socket
import os
import threading
from time import sleep
from threading import Thread

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket Preparado...')

def Main():
host = '127.0.0.1'
port = 5000

s.bind((host, port))
print('Enlaze listo...')

print('Escuchando...')
s.listen(5)
c, addr, = s.accept()
os.system('cls')

print('Conexion desde: '+str(addr))

def handle_client(client_socket):
while True:
    data = client_socket.recv(1024).decode('utf-8')
    if not data: break
    print('Client says: ' + data)
    print('Sending: ' + data)
    client_socket.send(data.encode('utf-8'))
client_socket.close()

if __name__ == '__main__':
while True:
    Main()
    client_socket, addr = s.accept()
    os.system('cls')
    print('Conexion desde: '+str(addr))
    Thread.start_new_thread(handle_client ,(client_socket,))
s.close()

编辑:这是我的实际代码,要测试它,我打开了两个Client.py代码并尝试连接到它。 第一个Client.py成功连接(尽管在接收和发送信息方面存在错误)第二个执行了,但未在服务器输出中显示为已连接或类似状态,它只是编译并保持这种状态。

每次获得新连接时都需要创建一个新线程

import socket
import thread

host = '127.0.0.1'
port = 5000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket Ready...')

s.bind((host, port))
print('Bind Ready...')

print('Listening...')
s.listen(1)

def handle_client(client_socket):
    while True:
        data = client_socket.recv(1024)
        if not data: break
        print('Client says: ' + data)
        print('Sending: ' + data)
        client_socket.send(data)
    client_socket.close()

while True:
    client_socket, addr = s.accept()
    print('Conexion from: '+str(addr))
    thread.start_new_thread(handle_client ,(client_socket,))
s.close()

好的,这是已解决的代码,我应该说我正在使用Python3版本。 阅读我发现的文档,这是代码,位于文档下方。

import socket
import os
import threading
from time import sleep
from threading import Thread
import _thread

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket Preparado...')

def Main():
host = '127.0.0.1'
port = 5000

s.bind((host, port))
print('Enlaze listo...')

print('Escuchando...')
s.listen(1)





def handle_client(client_socket):
while True:
    data = client_socket.recv(1024).decode('utf-8')
    if not data: break
    print('Client says: ' + data)
    print('Sending: ' + data)
    client_socket.send(data.encode('utf-8'))
client_socket.close()

if __name__ == '__main__':
Main()
while True:

    client_socket, addr = s.accept()
    os.system('cls')
    print('Conexion desde: '+str(addr))           
    _thread.start_new_thread(handle_client ,(client_socket,))
s.close()

https://docs.python.org/3/library/threading.html http://www.tutorialspoint.com/python3/python_multithreading.htm

问题出在_thread.start_new_thread(handle_client ,(client_socket,))只是import _thread在这里问一些问题,继续研究并得到它。

谢谢大家。

WhiteGlove

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM