Pythonです。
Socketを使用して、受信したテキストをそのまま返すエコーサーバーをつくりました。
沢山の機器で同時接続させたいので、スレッドを使用したのですが、挙動がおかしいです。

Pythonが初心者ということもあり、様々なサイトを見るも解決できず...
最後にstack overflowさんにたどり着いた次第です。

環境は
- Linux (PuppyLinux 571JP)
- Python 2.7.3
です。

これがエコーサーバーのソースです。

#coding: UTF-8

import socket
import threading

class TestThread(threading.Thread):
    def setSocket(self,c):
        self.c = c

    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        try:
            while True:
                self.text = c.recv(1024)
                print self.text
                c.send(self.text)
        except:
            print "error"
            c.close()

if __name__ == "__main__":
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(("localhost",8000))
    s.listen(5)
    while True:
        print "wait..."
        c,address = s.accept()
        t1 = TestThread()
        print "Connected! ",address
        t1.setSocket(c)
        t1.start()

これを実行し、telnetで接続すると

  1. telnet_A 接続
  2. telnet_B 接続
  3. telnet_A 発言 >>こんにちは
  4. Server 受信 << こんにちは
  5. telnet_B 受信 <<こんにちは ←なぜかtelnet_Bに送信される
  6. telnet_A 無反応 ←telnet_Aは何も受信しない
  7. telnet_A 発言 >>おはよう
  8. Server,telnet_A,telnet_B 無反応
    以降telnet_Aは切断していないが、発言しても送信されない

  9. telnet_B 発言 >>こんばんわ

  10. Server 受信 << こんばんわ
  11. telnet_B 受信 << こんばんわ
    ・・・以降は会話できる。
  12. telnet_B 切断 telnet終了

  13. Server 改行改行改行・・・・・ ←無限に改行を繰り返す

こんな感じです。
どこが原因なのでしょうか?