Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Vanderson Lucio Rodrigues em 12/12/2005    [ 5796 hits ]

Login: poet, 102400 pontos

Homepage: http://www.vandersongold.com.br   


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)

Scripts recomendados
   Script Linux recomendado X-Chat 2 MultiMsg
   Script Linux recomendado Transforma código de barras
   Script Linux recomendado Tradutor on-line em Python+GTK
   Script Linux recomendado Cotação atual do dólar - versão Python
   Script Linux recomendado Bot que baixa o KDE 3.4 e a QT para o Slackware 10.1

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.