Я новичок в сетевом программировании и питоне.python multithreading server
Я пытаюсь выяснить, как выполнять разные задания на стороне сервера.
Например, я хочу, чтобы одна функция создавала подключения для входящих клиентов, но в то же время я все еще могу выполнять некоторую работу администрирования с терминала.
Мой код, как показано ниже, но он не работает:
Отредактировано: он не работает означает, что он застрянет в функции init_conn()
Как:
starting up on localhost port 8887
Thread: 0 Connected with 127.0.0.1:48080
# waiting
Я изучаю структуру SocketServer, но не знаю, как это работает.
from thread import *
import socket
def init_conn():
thread_count =0
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Bind the socket to the port
server_address = ('localhost', 8887)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)
# Listen for incoming connections
sock.listen(10)
#now keep talking with the client
while 1:
#wait to accept a connection - blocking call
conn, addr = sock.accept()
print 'Thread: '+ str(thread_count) + ' Connected with ' + addr[0] + ':' + str(addr[1])
#start new thread takes 1st argument as a function name to be run, second is the tuple of arguments to the function.
start_new_thread(clientthread ,(conn,))
thread_count +=1
sock.close()
def clientthread(conn):
# receive data from client and send back
def console():
print 'this is console'
option = raw_input('-v view clients')
if option == 'v':
print 'you press v'
def main():
start_new_thread(init_conn(),())
start_new_thread(console(),())
if __name__ == "__main__":
main()
Во-первых, как именно 'это не work'? Во-вторых, я не видел реализацию функции 'start_new_thread', которая может быть существенной для этой проблемы. – skyline75489
'start_new_thread' - это низкоуровневая функция из пакета python' thread'. Я не могу ввести терминал после запуска server.py. – pyang