Pular para o conteúdo

Cliente/Servidor Usando Python

Este e um cliente escrito em Linguagem Pythpn, o qual utiliza chamadas de
sockets para comunicao com o servidor.
O Cliente nesse caso possui 3 tarefas principais:
    1 - Enviar o nome do arquivo a ser transferido;
    2 - Enviar o Tamanho do Arquivo a ser transferido;
    3 - Enviar o os dados contidos no arquivo.

Ps.: Vou está disponibilzando um servidor pra tratar as requisições desse cliente usando C.
Vanderson Lucio Rodrigues poet
Hits: 19.022 Categoria: Python Subcategoria: Internet
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Este e um cliente escrito em Linguagem Pythpn, o qual utiliza chamadas de
sockets para comunicao com o servidor.
O Cliente nesse caso possui 3 tarefas principais:
    1 - Enviar o nome do arquivo a ser transferido;
    2 - Enviar o Tamanho do Arquivo a ser transferido;
    3 - Enviar o os dados contidos no arquivo.

Ps.: Vou está disponibilzando um servidor pra tratar as requisições desse cliente usando C.
Download pyclient.py Enviar nova versão

Esconder código-fonte

#!/usr/bin/python
"""
@file: pyclient.py

Este e um cliente escrito em Linguagem Pythpn, o qual utiliza chamadas de
sockets
para comunicao com o servidor.
O Cliente nesse caso possui 3 tarefas principais:
    1 - Enviar o nome do arquivo a ser transferido;
    2 - Enviar o Tamanho do Arquivo a ser transferido; 
    3 - Enviar o os dados contidos no arquivo. 

"""
from  socket import *
import time 
import sys
import stat
import os 
import string

def safeSend(s, msg, BUF_SIZE):
   """
   Esse funcao tenta enviar os dados para o servidor   
   De forma mais confiavel.
   """
   sent = 0
   while msg:
      print '...\r'
      i = s.send(msg, BUF_SIZE)
      if i == -1: 
         return -1
      sent += i
      msg = msg[i:]
      time.sleep(3)

   return sent

def GetNome(entrada):
   """
   Essa Funcao, tem por finalidade, tratar o nome do arquivo
   para que o mesmo possas ser enviado sem as '/'. 
   Ah, dava pra ser bem melhor essa funcao. :(   
   """
   a = 0
   count = 0
   temp = ''
   inverso = ''
   arq = ''

   for i in entrada:
           if entrada[a] == '/':
                 count +=1
           a += 1
   if count == 0:
           return  entrada
           sys.exit(1)

   for j in entrada:
           temp += entrada[a-1]
           a -= 1

   a = 0
   while temp[a] != '/':
           inverso += temp[a]
           a += 1

   t = len(inverso)
   c = t
   while c > 0 :
           arq += inverso[c - 1]
           c -= 1
   
   return arq
   
def main(argv):
   """
   Este e o programa principal, no qual sao realizadas  as chamadas de
   funcoes e feito os principais processametos do programa.
   """
   if len(argv) < 3:
           print "Uso: pyclient [servidor] [arquivo] [porta] "
       raise SystemExit

   # Valores Default
   BUF_SIZE =  4096 
   now = time.time()
   print "Ola, hoje: ",time.ctime(now) 

   server = argv[1] 
   porta = int(argv[3])

   arquivo_io = argv[2]
   file_name  = GetNome(arquivo_io)


   # Tentar abrir o arquivo 
   try:
      fd = open(arquivo_io, 'r')
      # Atribui o tamanho do arquivo
      file_size = str((os.stat(arquivo_io)[stat.ST_SIZE]) / 1024)
      msg = fd.read()
      fd.close()
   except IOError:
      print "Arquivo nao encontrado: ", arquivo_io 
      sys.exit(1) 

   # Tenta pegar o IP do Servidor
   try:
      h = gethostbyname(server)
   except Exception, e:
      print "Nao foi Possivel Encontrar: ", server 
      sys.exit(1)

   # Tenta criar socket 
   try:
      s = socket(AF_INET, SOCK_STREAM)
   except Exception, e:
      print "Nao foi Possivel Criar Socket"
      sys.exit(1)
   try:
      s.connect((h, porta))
   except Exception, e:
      print "Falha na Conexao com Servidor"
   
   
   # Envia os dados, nome e tamanho do arquivo
   print 'Status: Enviando os dados...\r'
   safeSend(s, file_name, BUF_SIZE)
   safeSend(s, file_size, BUF_SIZE)
   safeSend(s, msg, BUF_SIZE)
   

   print "bye."   

if __name__ == "__main__":
    main(sys.argv)

Descubra seu IP através do MeuIP

baixador em python 2.0

Horóscopo do Dia

Verificador de CNPJ para Zope

Armazene seus arquivos rapidamente na sua conta GMAIL

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.