UDP 服务器:
# -*- coding: utf-8 -*-
#!/usr/bin/python3
#server UDP
from socket import *
def main():
# Cria host e port number
host = ""
port = 5000
# Cria socket #UDP
server = socket(AF_INET, SOCK_DGRAM)
# Indica que o servidor foi iniciado
print("Servidor iniciado")
# Bloco infinito do servidor
while True:
# Recebe a data e o endereço da conexão
print("server.recvfrom(1024)",server.recvfrom(1024))
data, endereço = server.recvfrom(1024)
# Imprime as informações da conexão
print("Menssagem recebida de", str(endereço))
print("Recebemos do cliente:", str(data))
# Vamos mandar de volta a menssagem em eco
resposta = "Eco=>" + str(data)
server.sendto(data, endereço)
# Fechamos o servidor
server.close()
if __name__ == '__main__':
main()
UDP 客户端:
# -*- coding: utf-8 -*-
#!/usr/bin/python3
#client UDP
from socket import *
def main():
# Cria host e port number
host = "localhost"
port = 5000
# O servidor será um par endereço e port
server = (host, port)
# Criamos o socket
sock = socket(AF_INET, SOCK_DGRAM)
sock.bind((host, port))
# Vamos mandar mensagem enquanto a mensagem for diferente de sair (s)
msg = input("-> ")
while msg != 's':
# Mandamos a mensagem através da conexão
sock.sendto(msg.encode(), server)
# Recebemos uma resposta do servidor
data, endereco = sock.recvfrom(1024)
# Imprimimos a mensagem recebida
print("Recebida ->", str(data))
# Podemos mandar mais mensagens
msg = input("-> ")
# Fechamos a conexão
sock.close()
if __name__ == '__main__':
main()
代码有效,但我不确定服务器或客户端是什么:UDP 服务器和 UDP 客户端的区别:sock.bind((host, port)) 是在客户端还是服务器端?
最佳答案
正如@VPfB 的回答,请参阅:What's the purpose of using sendto/recvfrom instead of connect/send/recv with UDP sockets?
模型服务器/客户端:
客户端是发起通信的部分,服务器是接收者。
客户:
# -*- coding: utf-8 -*-
#!/usr/bin/python3
from socket import *
def main():
# Cria host e port number
host = "localhost"
port = 5000
# O servidor será um par endereço e port
server = (host, port)
# Criamos o socket
sock = socket(AF_INET, SOCK_DGRAM)
##sock.bind((host, port)) #server side
# Vamos mandar mensagem enquanto a mensagem for diferente de sair (s)
msg = input("-> ")
while msg != 's':
# Mandamos a mensagem através da conexão
sock.sendto(msg.encode(), server) #encode para enviar no formato de bytes
# Recebemos uma respota do servidor
data, endereco = sock.recvfrom(1024)
# Imprimimos a mensagem recebida
print("Recebida ->", str(data))
# Podemos mandar mais mensagens
msg = input("-> ")
# Fechamos a conexão
sock.close()
if __name__ == '__main__':
main()
服务器:
# -*- coding: utf-8 -*-
#!/usr/bin/python3
from socket import *
def main():
# Cria host e port number
host = ""
port = 5000
# Cria socket #UDP
server = socket(AF_INET, SOCK_DGRAM)
server.bind((host, port))
# Indica que o servidor foi iniciado
print("Servidor iniciado")
# Bloco infinito do servidor
while True:
# Recebe a data e o endereço da conexão
print("server.recvfrom(1024)",server.recvfrom(1024))
data, endereço = server.recvfrom(1024)
# Imprime as informações da conexão
print("Menssagem recebida de", str(endereço))
print("Recebemos do cliente:", str(data))
# Vamos mandar de volta a menssagem em eco
resposta = "Eco=>" + str(data)
server.sendto(data, endereço)
# Fechamos o servidor
server.close()
if __name__ == '__main__':
main()
关于python - UDP 服务器和 UDP 客户端之间的区别 : sock. bind((host, port)) 是在客户端还是服务器端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39028505/