Help us understand the problem. What is going on with this article?

Pythonによるソケット通信とマルチスレッド処理

More than 3 years have passed since last update.

マルチスレッド処理をして、サブのスレッドがサーバとなって、メインスレッドからの入力を受け付けるようになっています。
ターミナル上で実行したのち、適当な文字列を打ってEnterキーを押すと、メインスレッドからサブスレッドへとソケット通信によって文字列が送られます。
サブスレッドのほうで文字列を受け取ると、print文により、ターミナルに出力されます。

環境
・Python2.7

thread_socket.py
import threading
import socket
import time
import datetime


# for receiving
class TestThread(threading.Thread):
    def __init__(self):
        super(TestThread, self).__init__()

        self.host = ""
        self.port = 12345
        self.backlog = 10
        self.bufsize = 1024

        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.bind((self.host, self.port))

    def run(self):
        print " === sub thread === "
        self.sock.listen(self.backlog)
        conn, address = self.sock.accept()
        while True:
            mes = conn.recv(self.bufsize)
            if mes == 'q':
                print "sub thread is being terminaited"
                break
            print mes

        self.sock.close()


if __name__ == '__main__':
    th = TestThread()
    th.setDaemon(True)
    th.start()

    time.sleep(1)
    # time.sleep(100)  # これは長すぎる(100秒待て、という指令)

    print " === main thread === "

    ip = "localhost"
    port = 12345
    bufsize = 1024

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((ip, port))
    while True:
        inp = raw_input("YOU>")
        sock.send(inp)
        time.sleep(1)
        if inp == 'q':
            th.join()
            print "main thread is being terminated"
            break

    sock.close()

slowsingle
ピカピカの一年生ではなくなってしまいました
https://slowsingle.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away