Servidor:
import socketserver
print("Servidor
iniciado...")
class
MyUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
data = self.request[0].strip()
socket = self.request[1]
print("{0} Ha
escrito:".format(self.client_address[0]))
print(data)
socket.sendto(data.upper(),
self.client_address)
if __name__ ==
"__main__":
HOST, PORT = "localhost", 9999
server = socketserver.UDPServer((HOST,
PORT), MyUDPHandler)
server.serve_forever()
Cliente (Cambia "localhost" por
la dirección
IP del
servidor.):
import socket
import sys
print("Cliente
iniciado...")
HOST, PORT =
"localhost", 9999
data = "
".join(sys.argv[1:])
sock =
socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(bytes(data
+ "\n","utf8"), (HOST, PORT))
received =
sock.recv(1024)
print("Enviado:
{0}".format(data))
print("Recibido: {0}".format(received))
Código de ejemplo (C)[editar]
El siguiente ejemplo muestra cómo usar el protocolo UDP
para una comunicación cliente/servidor:
Servidor:
#include
<winsock.h>
#include
<stdio.h>
#pragma
comment(lib,"ws2_32.lib")
const int BufLen =
1024;
int main()
{
WSADATA
wsaData;
SOCKET
RecvSocket;
sockaddr_in
RecvAddr;
int
Puerto = 2345;
char
RecvBuf[BufLen];
sockaddr_in
SenderAddr;
int
SenderAddrSize = sizeof(SenderAddr);
WSAStartup(MAKEWORD(2,2),
&wsaData);
RecvSocket
= socket(AF_INET, SOCK_DGRAM,
IPPROTO_UDP);
RecvAddr.sin_family
= AF_INET;
RecvAddr.sin_port
= htons(Puerto);
RecvAddr.sin_addr.s_addr = INADDR_ANY;
bind(RecvSocket,
(SOCKADDR *) &RecvAddr, sizeof(RecvAddr));
recvfrom(RecvSocket,RecvBuf,
BufLen,0,(SOCKADDR *)&SenderAddr,&SenderAddrSize);
printf("%s\n",RecvBuf);
closesocket(RecvSocket);
WSACleanup();
}
Cliente (Cambia "127.0.0.1" por la dirección IP
del servidor):
#include
<winsock.h>
#pragma
comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsaData;
SOCKET
SendSocket;
sockaddr_in
RecvAddr;
int Puerto = 2345;
char
ip[] = "127.0.0.1";
char
SendBuf[] = "Hola!!!!";
WSAStartup(MAKEWORD(2,2),
&wsaData);
SendSocket
= socket(AF_INET, SOCK_DGRAM,
IPPROTO_UDP);
RecvAddr.sin_family
= AF_INET;
RecvAddr.sin_port
= htons(Puerto);
RecvAddr.sin_addr.s_addr = inet_addr(ip);
sendto(SendSocket,SendBuf,strlen(SendBuf)+1,0,(SOCKADDR
*) &RecvAddr,sizeof(RecvAddr));
WSACleanup();
}
No hay comentarios:
Publicar un comentario