Problemas com sockets [RESOLVIDO]

1. Problemas com sockets [RESOLVIDO]

DK Gentleman
dkgentleman

(usa Funtoo)

Enviado em 27/07/2016 - 00:23h

ola a todos estou aqui para tirar uma duvida que me assombra a algum tempo, um problema que ocorreu enquanto eu testava alguns programas envolvendo sockets em python o programa era bem simples ele usava um cliente para entregar uma mensagem ao servidor e o servidor arquivava a mensagem e a respondia com um ack, depois de configurar um ddns no-ip, abrir uma porta e fazer uma regra de NAT(a qual nao sei se e necessaria por favor gostaria tambem que me dissessem se e ou nao) e quanto fui tentar pronto!o cliente me apresenta um erro de "conexao timeout" entao gostaria que me explicassem como resolver o erro e me dissessem porque este erro ocorre (obs:segue abaixo as sources) grato desde ja!
#############
# #
# Servidor #
# #
#############

import socket
import threading

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
HOST = '192.168.0.10'
PORT = 443
sock.bind((HOST,PORT))
sock.listen(5)
print '[*]listening on %s::%d' % (HOST,PORT)

def handle_client(client_socket):

request = client_socket.recv(1024)

filew = open('msg.txt','r')
a = filew.read()
filew.close()
filew = open('msg.txt','w')
filew.write(request + a)
filew.close()

print '[$]received'

client_socket.send('ACK')

client_socket.close()

while True:

client,addr = server.accept()

print '[*]connected from: %s::%d' % (addr[0],addr[1])

client_handler = threading.Thread(target=handle_client,args=(client,))
client_handler.start()



###########
# #
# Cliente #
# #
###########
import socket

def client(HOST,PORT,msg):
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print '[*]connecting to host...'
sock.connect((HOST,PORT))
print '[*]sending the message...'
sock.send(msg)
print '[*]waiting for answers...'
resp = sock.recv(1024)
if resp == 'ACK':
print '[$]sucess'
else:
print '[!]fail to send the message'

host = raw_input('host=>')
port = int(raw_input('port=>'))
msg = raw_input('msg=>')

client(host,port,msg)




  


2. MELHOR RESPOSTA

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 27/07/2016 - 15:01h

No servidor você estava abrindo um arquivo para leitura e depois reabrindo para escrita, usando o append ficou com menos linhas. Depois você criou crioiu o sock e depois o chamou como sendo server e por isso o erro, no mais está tudo OK

Eu tentei modificar o mínimo possível do seu código e troquei o endereço do server pelo de loopback pois fica mais fácil fazer testes.

#############
# #
# Servidor #
# #
#############

import socket
import threading

HOST = '127.0.0.1'
PORT = 443

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((HOST, PORT))
sock.listen(5)
print '[*]listening at %s::%d' % (HOST, PORT)


def handle_client(client_socket):
data = client_socket.recv(1024)

filew = open('/home/ctw6av/msg.txt', 'a')
filew.write(data + '\n')
filew.close()

print '[$]received'

client_socket.send('ACK')

client_socket.close()


while True:
client, addr = sock.accept()

print '[*]connected from: %s::%d' % (addr[0], addr[1])

client_handler = threading.Thread(target=handle_client, args=(client,))
client_handler.start()


###########
# #
# Cliente #
# #
###########
import socket


def client(host, port, msg):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print '[*]connecting to host...'
sock.connect((host, port))
print '[*]sending the message...'
sock.send(msg)
print '[*]waiting for answers...'
resp = sock.recv(1024)
if resp == 'ACK':
print '[$]sucess'
else:
print '[!]fail to send the message'


host = raw_input('host=> ')
port = int(raw_input('port=> '))
msg = raw_input('msg=> ')

client(host, port, msg)





----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------

3. RE:Problemas com sockets

DK Gentleman
dkgentleman

(usa Funtoo)

Enviado em 27/07/2016 - 15:46h

obrigado pela resposta e desculpe amigo pelo erro mas acho que postei o codigo errado pois acabei de formatar o pc e esta uma bagunca aqui este codigo na verdade e um que eu mudei criei pouco tempo do livro black hat python e provavelmente confundi os nomes ao ler o livro kkkkk, pois ja era tarde da noite e confundi um pouquinho, mas o codigo que usei no dia e bem parecido so muda mesmo isso do sock ser sock msm e nao server kkkk, entao e so isso mesmo?Quero dizer se o sock fosse mesmo sock e nao server ele funcionaria de forma normal sem dar o timeout?Ha e obrigado por melhorar o codigo!Sou meio novo em programacao voce poderia me explicar oq o "a" faz? ele tilizar o write e o read juntos?Desde ja agradeco.


4. Re: Problemas com sockets [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 27/07/2016 - 15:48h

Sim... se você pegar o código que retornei acima e executar vai funcionar normalmente.



----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


5. RE:Problemas com sockets

DK Gentleman
dkgentleman

(usa Funtoo)

Enviado em 27/07/2016 - 15:51h

Muitissimo obrigado gostaria de lhe fazer mais uma pergunta se possivel como funciona o "a" na parte de abrir o arquivo e e como se fosse um write e read juntos?


6. RE:Problemas com sockets

DK Gentleman
dkgentleman

(usa Funtoo)

Enviado em 27/07/2016 - 15:53h

pode deixar ja entendi aqui


7. Re: Problemas com sockets [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 27/07/2016 - 15:57h

significa append... primeiro se o arquivo não existir ele será criado assim também com 'w', e se existir ele manda a mensagem para o final da ultima por isso eu somei msg + '\n' para ele manda sempre o próximo buffer para a outra linha.



----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


8. RE:Problemas com sockets

DK Gentleman
dkgentleman

(usa Funtoo)

Enviado em 27/07/2016 - 16:07h

Obrigado mais uma vez!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts