我是 python 和网络编程的新手,我正在用 python 编写一个交换信息的 TCP 服务器客户端。 除了客户端代码中的最后一个命令,一切都正常:
# Receive from server
number_received = socket.recv(2048).decode('utf-8')
print("Number Generated in Server: ", number_received.decode('utf-8'))
它永远不会出错,它只是在我运行程序时没有出现。 谢谢你,
服务器代码
import random
import socket
# Create the server
HOST = '127.0.0.1'
PORT = 9090
serverAddress = (HOST, PORT)
#Create Server Socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # using IPV4 and TCO/IP connection
#BInd the Server socket with the Server port number.
server.bind(serverAddress)
# wait for clients to start communications with maximum 10 queued connections.
server.listen(10)
print ("The server is ready to receive.")
while True:
#Create Connection Socket
communication_socket, address = server.accept()
print(f"Connected to {address}")
#Recieve the message from client.
message = communication_socket.recv(2048).decode('utf-8')
print(f"Message from Client is: {message}")
# Generate a random number.
ServerNumber = random.randint(1, 51)
print(f"The random number in the range of 1-50 is: {ServerNumber}")
message = communication_socket.recv(2048).decode('utf-8')
# Send the message
communication_socket.send(f"From the Server: {ServerNumber}".encode('utf-8'))
communication_socket.send(ServerNumber.encode('utf-8'))
# Close communication with client
communication_socket.close()
客户代码
import socket
# Create Server
HOST = '127.0.0.1'
PORT = 9090
# Create client socket (IPv4, TCP/IP socket)
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# request to connect to the server.
socket.connect((HOST, PORT))
# Announce the Client Name
print("This is the client computer.")
# The input function to ask the user to enter a number between 1-20
number = int(input("Enter a number in the range of 1-20: "))
while not int(number) in range(1, 21):
number = input("Invalid Integer! The number must be in range of 1-20: ")
print("The number is: " + number)
# Calculate the sum of the first n natural number
n = int(number)
sum = 0
# loop from 1 to n
for num in range(1, n + 1, 1):
sum = sum + num
# Start communication with the server and send the sum number.
while 1:
# Send message (conversion form int ot String)
socket.send(str(sum).encode("utf8"))
# Receive from server
number_received = socket.recv(2048).decode('utf-8')
print("Number Generated in Server: ", number_received.decode('utf-8'))
# Close connection
socket.close()