Ir para o conteúdo
teckV

[Python] Sockets: Cliente / Servidor

Mensagens Recomendadas

teckV    1
teckV

Vou agora apresentar um exemplo de manipulação de Sockets para criar uma simples aplicação Cliente / Servidor...

Podem criar qualquer servidor ou cliente sobre esta filosofia bastando enviar os comandos do Protocolo a usar tipo

o IRC ou SMTP para email... podem fazer tudo... analisem o RFC´s respectivos ao protocolo que pretemdem implementar e

mãos à obra...

NOTA:

pagina oficial dos RFC´s - Documentos que standarizam os protocolos Internet

http://www.ietf.org/rfc.html

ou forneçam logo o numero do RFCcomo exemplo uma extensão do SMTP

SMTP Service Extension for

Returning Enhanced Error Codes

http://www.ietf.org/rfc/rfc2034.txt?number=2034

http://www.ietf.org/rfc/rfcNNNN.txt onde NNNN é o numero do RFC pretendido

Para criar uma solução Cliente / Servidor temosobviamenteque criar dois progrmas... o Servidor que fica à escuta de ligações e o Cliente que inicia a ligação.

Criem um ficheiro cliente.py e introduzam o seguinte código:

from socket import *

HOST = '192.168.0.10'
PORT = 8010
BUFSIZ = 1024
ADDR = (HOSTPORT)

tcpCliSock = socket(AF_INETSOCK_STREAM)
tcpCliSock.connect(ADDR)

while 1:
data = raw_input('>')
if not data: break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZ)
if not data: break
print "ligado a "ADDR" - dados - "data

tcpCliSock.close()

e criem outro ficheiro servidor.py e ponham este código:

from socket import *

HOST = 'localhost'
PORT = 8010
BUFSIZ = 1024
ADDR = (HOSTPORT)

tcpSerSock = socket(AF_INETSOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while 1:
print "esperando ligacao"
tcpCliSockaddr = tcpSerSock.accept()
print "ligado a: "addr

while 1:
	data = tcpCliSock.recv(BUFSIZ)
	if not data: break
	tcpCliSock.send("recebendo... > " + data)

tcpCliSock.close()
tcpSerSock.close()

numa linha de comandos do DOS executem o servidor.py para este ficar à escuta de ligações... estou a usar o porto 8010 mas se tiverem um servidor já à escuta nesse porto mudem o porto para outro qualquerafim de evitar conflitos...

c:\servidor.py

noutra janela de DOS ou noutro PC iniciem o cliente.py

no código do programa cliente alterem nesta linha o IP do servidor

HOST = '192.168.0.10'

c:\cliente.py

ficam com um servidor e um cliente... depois de inicializado o cliente escrevam qualquer texto e o mesmo texto vai aparecer na consola do servidor...

giro... é assim que funcionam as aplicações cliente servidor... com imaginação podem criar o vosso proprio protocolo...

tipo...

criem um comando com o nome OLHA e num servidor.py ponham código para caso ele receba o texto OLHA... fixe... o céu é o limite.. ou nãojá se falam em Universos Paralelos e finalmente entendi o conceito... lento mas foi... que é que virá agora?

no exemplo o servidor quando recebe dados ele evia de novo para o cliente acrescentando "recebendo"... para criarem o vosso proprio protocolo substituam esse código por um código de interpretação de comandotipo "caso data=OLHA istocaso data=DESLIGA aquilo" etc....

a variavel data está preenchida com os dados recebidos...

tcpCliSock.send("recebendo... > " + data)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
teckV    1
teckV

como te foi explicado em cima e da forma que executas todos os scripts Python.. quando istalas o python em windows ele associa os files .py com o interpretador de python e sempre que chamas um file .py o windows/dos envia automaticamente esse file .py para o interpretador de pyhton e executa-o...

c:\servidor.py

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade