xxm*_*exx 7 python sockets multithreading
问题
异常的原因是什么?
客户端是否导致任何错误?
如果可能的话,请解释其他错误.
背景
我正在创建一个Python GUI套接字服务器.当客户端连接到我的服务器时,GUI窗口将打开(我仍在处理此问题).但是,当客户端连接时,我收到一个错误:
Unhandled exception in thread started by <function clientthread at 0x10246c230>
Run Code Online (Sandbox Code Playgroud)
由于实际脚本相当长,我提供了一个pastebin链接.
这是线程代码.s是我的socket对象的名称.
def clientthread(s):
#Sending message to connected client
#This only takes strings (words
s.send("Welcome to the server. Type something and hit enter\n")
#loop so that function does not terminate and the thread does not end
while True:
#Receiving from client
data = s.recv(1024)
if not data:
break
s.sendall(data)
print data
s.close()
Run Code Online (Sandbox Code Playgroud)
追溯
感谢Morten的建议.这是追溯.
Socket Created
Socket Bind Complete
Socket now listening
Connected
Traceback (most recent call last):
File "/Users/BigKids/Desktop/Coding/Python 2/Sockets/Function/Server GUI Alpha Function.py", line 80, in clientthread
s.send("Welcome to the server. Type something and hit enter\n")
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 170, in _dummy
raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
就个人而言,我认为很多错误都是由GUI造成的.
谢谢!
其一,您可以捕获异常,打印它并查看它是什么:)
为此,例如用 try/ except 子句包围所有内容并打印发生的任何异常。
def clientthread(s):
try:
#Sending message to connected client
#This only takes strings (words
s.send("Welcome to the server. Type something and hit enter\n")
#loop so that function does not terminate and the thread does not end
while True:
#Receiving from client
data = s.recv(1024)
if not data:
break
s.sendall(data)
print data
s.close()
except Exception:
import traceback
print traceback.format_exc()
Run Code Online (Sandbox Code Playgroud)
我猜这是客户端断开连接的原因。这将导致异常,您应该适当处理它。如果客户端可以通过多种方式断开连接。通过告诉您,通过超时,通过在您尝试发送某些内容时断开连接等。所有这些情况都是可能的异常情况,您应该测试它们并处理它们。希望这能帮助您继续前进,如果没有,请发表评论:)
| 归档时间: |
|
| 查看次数: |
14922 次 |
| 最近记录: |