【发布时间】:2019-11-22 16:48:58
【问题描述】:
试图找出问题所在让我头疼。我有一个基本的客户端和一个服务器,客户端发送一个请求,服务器回复一个答案,问题是服务器没有发送他期望的内容。
非常感谢任何可以帮助我的人,非常感谢。 这是代码: 客户端代码:
def main():
import socket
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_socket.connect(('127.0.0.1',8000))
info = input(r"Enter what you want to send to the server: ")
while info != "exit":
my_socket.send(info.encode('ascii'))
if info != "EXIT":
data_from_server = my_socket.recv(2).decode('ascii')
data_from_server = my_socket.recv(int(data_from_server))
print(data_from_server.decode('ascii'))
info = input("Enter what you want to send to the server: ")
else:
info = "exit"
my_socket.close()
if __name__ == '__main__':
main()
这是服务器代码:
import socket
import sys
import time
from random import randrange
SERVER_NAME = "010101"
def number_of_elements(str):
num = 0
for e in str:
num += 1
return num
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0',8000))
while True:
server_socket.listen(1)
client_socket, client_adresss = server_socket.accept()
client_request = client_socket.recv(4)
while client_request != b'EXIT':
if client_request == b'TIME':
num_of_chars = number_of_elements(time.ctime())
client_socket.send(str(num_of_chars).encode('ascii'))
client_socket.send(time.ctime().encode('ascii'))
elif client_request == b'NAME':
num_of_chars = number_of_elements(SERVER_NAME)
client_socket.send(str(num_of_chars).encode('ascii'))
client_socket.send(SERVER_NAME.encode('ascii'))
elif client_request == b'RAND':
num = 2
client_socket.send(str(num).encode('ascii'))
random_num = randrange(11)
client_socket.send(str(random_num).encode('ascii'))
else:
s = str(len("Incorrect Command"))
client_socket.send(s.encode('ascii'))
client_socket.send(b"Incorrect Command")
try:
client_request = client_socket.recv(4)
except:
client_request = b"EXIT"
client_socket.close()
server_socket.close()
if __name__ == '__main__':
main()
【问题讨论】:
-
“效果不好”是什么意思?连接不可靠吗?还是连接后有其他问题?
-
确实可以连接,问题出在请求上,我添加了一张照片作为示例。当客户端向服务器请求“TIME”时,首先发送答案有多少字节,然后他应该发送时间,但是它没有按预期工作。
标签: python sockets server client