teckV Posted March 14, 2006 at 06:20 PM Report Share #18245 Posted March 14, 2006 at 06:20 PM 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) Link to comment Share on other sites More sharing options...
vbmaster Posted April 26, 2006 at 04:40 PM Report Share #24440 Posted April 26, 2006 at 04:40 PM Como é que eu executo no DOS o servidor.py ? Por acaso tenho de ter o ActivePython? Link to comment Share on other sites More sharing options...
teckV Posted April 26, 2006 at 05:30 PM Author Report Share #24453 Posted April 26, 2006 at 05:30 PM 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 Link to comment Share on other sites More sharing options...
vbmaster Posted April 26, 2006 at 05:55 PM Report Share #24458 Posted April 26, 2006 at 05:55 PM Pois, mas o interpretador em python é o ActivePython que eu não tenho instalado no pc.... :| Link to comment Share on other sites More sharing options...
teckV Posted April 27, 2006 at 10:40 AM Author Report Share #24592 Posted April 27, 2006 at 10:40 AM 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 Link to comment Share on other sites More sharing options...
vbmaster Posted April 27, 2006 at 01:37 PM Report Share #24613 Posted April 27, 2006 at 01:37 PM thanks... 😛 Isto é muito giro.. já tentei aqui no próprio pc... Era fixe era fazer tipo um msn de consola...😛 Link to comment Share on other sites More sharing options...
alexmgarcia Posted May 22, 2006 at 07:07 PM Report Share #28942 Posted May 22, 2006 at 07:07 PM teckV, obrigado, vou começar agora a ver sockets em Python, isso vai ajudar 😄 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now