• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

teckV

[Python] Sockets: Cliente / Servidor

7 mensagens neste tópico

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é que eu executo no DOS o servidor.py ?

Por acaso tenho de ter o ActivePython?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas o interpretador em python é o ActivePython que eu não tenho instalado no pc.... :|

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não vbmaster.. não é assim... o ActivePython é um dos vários interpretadores de python disponiveis e nem é o oficial...

mas também há algo que não entendo... queres correr uma aplicação em python sem teres o intrepertador de python instalado??

descarrega o python daqui e instala-o

http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

thanks... :P

Isto é muito giro.. já tentei aqui no próprio pc...

Era fixe era fazer tipo um msn de consola...:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

teckV, obrigado, vou começar agora a ver sockets em Python, isso vai ajudar :D

0

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