Как объединить 3 отдельных UDP-пакета? - PullRequest
0 голосов
/ 28 апреля 2020

Этот вопрос, возможно, задавался раньше, но я не могу его найти. Я пытаюсь отправить 3 отдельных пакета между клиентом и сервером. Эту часть я могу сделать, однако мне нужно взять эти 3 пакета, сложить их вместе и распечатать результат.

Это часть, с которой у меня проблемы. Я никогда не программировал раньше и только действительно начал, поэтому я новичок во всем этом, и, пожалуйста, будьте осторожны с тем, что, вероятно, ужасное кодирование с моей стороны!

Это то, что я имею для клиента:

import socket

clientSock = socket.socket(socket.AF_INET , socket.SOCK_DGRAM) 

UDP_IP = "localhost" 
UDP_PORT = 6842 
address = ("localhost" , 6842)

s1 = str(input("Please enter Packet number 1: "))
clientSock.sendto(bytes("s1", "utf-8"), (address))
s2 = str(input("Please enter Packet number 2: "))
clientSock.sendto(bytes("s2", "utf-8"), (address)) 
s3 = str(input("please enter Packet number 3: ")) 
clientSock.sendto(bytes("s3", "utf-8"), (address))

print ("Sent 3 packets to server")
print ("Waiting to receive message...") 

И вот что у меня есть для сервера:

import socket

serverSocket = socket.socket(socket.AF_INET , socket.SOCK_DGRAM)

UDP_IP = "localhost"
UDP_PORT = 6842
address = ("localhost" , 6842)

serverSocket.bind(address) 
print ("Waiting for client...")

while True:
    data,addr = serverSocket.recvfrom(6842)
    print ("Received:",data," from",addr) 
    n = len('s1' , 's2' , 's3')
    R = "s1" + "#" + "s2" + "#" + "s3"
    print (n)
    print (R)

Опять же, здесь довольно много fl aws, но мне было интересно, сможет ли кто-нибудь указать мне правильное направление.

1 Ответ

0 голосов
/ 28 апреля 2020

Я думаю, что ваш сервер просто хочет сделать что-то похожее на:

while True:
  values = []
  for i in range(3):
    values.append(float(sock.recv(1024)))
  print(sum(values))

Обратите внимание, что UDP ненадежен, поэтому вы не всегда можете получить три пакета, отправленные с клиента

, вы также можно сжать содержимое while l oop в одну строку и, следовательно, избежать создания какого-либо списка, но я оставлю это на ваше усмотрение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...