我有一个可以在主机上工作的客户端代码。我使用docker运行服务器代码。但是,当我运行服务器代码时,无法看到是否已完成任何工作。我将结果打印在屏幕上,以查看是否已执行操作。
client.py
import socket
import time
def send_message(message):
client_socket = ""
print(message)
try:
host = "127.0.0.1" # as both code is running on same pc
port = 5050
# time.sleep(15)
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # instantiate
client_socket.connect((host, port)) # connect to the server
client_socket.send(str(message).encode())
# get_message = client_socket.recv(1024).decode()
# print(get_message)
# if get_message == 'True':
# client_socket.close()
# return True
# else:
# client_socket.close()
# return False
return True
except ConnectionResetError as e:
client_socket.close()
print(e)
return False
except Exception as error:
client_socket.close()
print(error)
if __name__ == "__main__":
print(send_message("Test Message"))
Server.py
#!/usr/bin/env python
import socket
import time
def app_server_program(server_socket):
connection = ""
try:
while True:
print("dinleme basladı")
connection, address = server_socket.accept() # accept new connection
# time.sleep(5)
# receive data stream. it won't accept data packet greater than 1024 bytes
data = connection.recv(1024).decode()
print(data)
connection.close()
if data:
print("dataJson")
except Exception as error:
print(error)
# app_server_program(server_socket)
def socket_connect():
# get the hostname
print("51")
host = "0.0.0.0"
port = 5003 # initiate port no above 1024
# time.sleep(5)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # get instance
# look closely. The bind() function takes tuple as argument
server_socket.bind((host, port)) # bind host address and port together
# configure how many client the server can listen simultaneously
server_socket.listen()
print("60")
app_server_program(server_socket)
if __name__ == "__main__":
print("asfasd")
# time.sleep(5)
socket_connect()
我的server.py和client.py代码如上所述。
Dockerfile
FROM python:3.6.5
COPY . /docker-socket
WORKDIR /docker-socket
CMD ["python3", "__init__.py"]
这是我使用的dockerfile文件。
docker run -p 5050:5003 <container-name>
我以表格形式运行docker,但是我看不到我在cmd上发送的消息。偶然在server.py
print(datajson)
当我输入错误的代码时,我会看到发送的消息以及其他打印功能的结果。但是要查看这些消息,我必须多次运行client.py文件。 我做错了什么步骤吗?