我正在使用套接字和多线程进行基本的聊天程序。该程序连接,并在从客户端发送的消息,执行时会提高在服务器端这个错误:使用多线程的基本Socket聊天程序引发错误
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "C:\Python27\lib\threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "C:\Users\jclarke14\Desktop\Server - 2.py", line 25, in check_for_data
data = c.recv(1024)
File "C:\Python27\lib\socket.py", line 174, in _dummy
raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor
我是一个初学者,新多线程和插座。我究竟做错了什么?
这里是我的客户端代码:
#Check For Incoming Data
def check_for_data():
while True:
data = s.recv(1024)
print "Other: " + data
print
#Send Data
def send_data():
while True:
message = raw_input("You: ")
print
s.sendall(message)
#Start Threads
t = threading.Thread(target=send_data)
t.daemon = True
t.start() #1
t = threading.Thread(target=check_for_data)
t.daemon = True
t.start() #2
和代码服务器:
c, addr = s.accept()
print "Connection From: " + str(addr)
print
def check_for_data():
while True:
data = c.recv(1024)
print "Other: " + str(data)
print
def send_data():
while True:
message = raw_input("You: ")
print
c.sendall(message)
#Start Threads
t = threading.Thread(target=send_data)
t.daemon = True
t.start() #1
t = threading.Thread(target=check_for_data)
t.daemon = True
t.start() #2
完整的代码可以在这里找到:https://drive.google.com/folderview?id=0B3t3mUQs3K-iLWY3Y3JZX2YzU2c&usp=sharing
谢谢:)
谢谢您的回答。我在哪里关闭套接字? –
我是一个初学者:( –
@ J.Clarke:文件的最后一行:'c.close()'。这会关闭连接到客户端的套接字 – mhawke