2
的UDP服務器:UDP服務器和UDP客戶端之間的區別:sock.bind((主機,端口))位於客戶端還是服務器端?
# -*- 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客戶端之間的區別:襪子.bind((主機,端口))在客戶端還是服務器端?
對於UDP真的有像TCP沒有 「服務器 - 客戶端」 的關係。如果多個程序正在與中央程序通信,那麼中央程序可以稱爲「服務器」,而其他程序稱爲「客戶」。或者,如果你有一個提供*服務的程序*,那麼它可以被認爲是一個「服務器」,而其他請求這個*服務的程序*(不管它可能是什麼)都可以被認爲是客戶端。 –
@JoachimPileborg,謝謝。因此,如果我調用具有sock.bind((主機,端口)「客戶端」的腳本,它會錯誤嗎?它是不可分辨的嗎? –
在服務器(接收器)端;請參閱EJP的答案:http:/ /stackoverflow.com/questions/6189831/whats-the-purpose-of-using-sendto-recvfrom-instead-of-connect-send-recv-with-ud – VPfB