【发布时间】:2015-12-12 10:20:54
【问题描述】:
当我运行我的客户端时,我的服务器崩溃了,
上面写着:
Traceback (most recent call last):
File "C:/Users/Or/PycharmProjects/2.6/cyber.py", line 17, in <module>
data = client_socket.recv(1024)
File "C:\Python27\lib\socket.py", line 174, in _dummy
raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor
服务器:
import socket
import random
import time
server_socket = socket.socket()
server_socket.bind(('0.0.0.0', 8820))
server_socket.listen(1)
(client_socket, client_address) = server_socket.accept()
TIME = time.asctime(time.localtime())
NAME = "Frank"
RAND = random.randrange(1,10)
EXIT = client_socket.close()
options = [TIME, NAME, RAND, EXIT]
data = client_socket.recv(1024)
if data == str(TIME):
client_socket.send('Time is: ' + TIME)
elif data == str(NAME):
client_socket.send('My name is: ' + NAME)
elif data == str(RAND):
client_socket.send(RAND)
elif data == str(EXIT):
EXIT
client_socket.close()
server_socket.close()
客户:
import socket
my_socket = socket.socket()
my_socket.connect(('127.0.0.1', 8820))
theData = raw_input("enter command")
options = ['TIME', 'NAME', 'RAND', 'EXIT']
for z in options:
if theData == z:
my_socket.send(theData)
data = my_socket.recv(1024)
print data
else:
theData = raw_input("enter a real command")
我该怎么办?
【问题讨论】:
-
迭代一个封闭的端口。哪个结束套接字会话,服务器,客户端?永远服务器为什么?如何检查套接字错误或错误?不要在服务器上使用自动关闭(单个命令或消息)功能。定义关闭所有操作的关闭命令(例如:套接字已使用)。
标签: python python-2.7 sockets errno