Chat using different networks

Asked

Viewed 875 times

0

I’ve been chatting on , and when I test locally, the chat works, but when I test on networks that are in different places, it doesn’t work, example server on my computer and client on a friend’s computer.

client code:

from socket import socket,AF_INET,SOCK_STREAM
from threading import Thread
import time
# -*- coding: utf-8 -*-


#classe para manipular o socket
class Send:
 def __init__(self):
  self.__msg=''
  self.new=True
  self.con=None
 def put(self,msg):
  self.__msg=msg
  if self.con != None:
   #envia um mensagem atravez de uma conexão socket
   self.con.send(str.encode(self.__msg))
 def get(self):
  return self.__msg
 def loop(self):
  return self.new

#função esperar - Thread
def esperar(tcp,send,host='',port=5000):

 destino=(host,port)
 #conecta a um servidor
 tcp.connect(destino)

 while send.loop():


  print('Conectado a ',host,'.')

  #atribui a conexão ao manipulador
  send.con=tcp
  while send.loop():
   #aceita uma mensagem
   msg=tcp.recv(1024)

   if not msg: break
   print(str(msg))


   print("intel x86 ")
   print("fuzzing esta acontendo espere!!")
   time.sleep(10)
   print("ENDEREÇO de MEMORIA BASE: 0x45643476")
   print("KERNEL: windows 3.3")
   print("ADRL E CANARY PROTEÇOES")
   print("STACK COM ASDLER ")



if __name__ == '__main__':
 print(" Deselvolvido alexsander borges (aemg_borges) ")

 print('\nDigite o nome ou IP do servidor(localhost): ')
 host=raw_input()
 print(host)

 if host=='':
  host = '127.0.0.1'

 #cria um socket

 tcp=socket(AF_INET,SOCK_STREAM)
 send=Send()
 #cria um Thread e usa a função esperar com dois

argumentos
 processo=Thread(target=esperar,args=(tcp,send,host))
 processo.start()
 print('')

 msg= raw_input()
 while True:
  send.put(msg)
  msg=raw_input()

 processo.join()
 tcp.close()
 exit()

server code:

from socket import socket,AF_INET,SOCK_STREAM
from threading import Thread

#classe para manipular o socket
class Send:
 def __init__(self):
  self.__msg=''
  self.new=True
  self.con=None
 def put(self,msg):
  self.__msg=msg
  if self.con != None:
   #envia um mensagem atravez de uma conexão socket
   self.con.send(str.encode(self.__msg))
 def get(self):
  return self.__msg
 def loop(self):
  return self.new

#função esperar - Thread
def esperar(tcp,send,host='',port=5000):
 origem=(host,port)
 #cria um vinculo
 tcp.bind(origem)
 #deixa em espera
 tcp.listen(1)

 while True:
  #aceita um conexão
  con,cliente=tcp.accept()
  print('Cliente ',cliente,' conectado!')
  #atribui a conexão ao manipulador
  send.con=con

  while True:
   #aceita uma mensagem
   msg=con.recv(1024)
   if not msg: break
   print (str(msg,'utf-8'))


if __name__ == '__main__':
 #cria um socket
 tcp=socket(AF_INET,SOCK_STREAM)
 send=Send()
 #cria um Thread e usa a função esperar com dois argumentos
 processo=Thread(target=esperar,args=(tcp,send))
 processo.start()

 print('Iniciando o servidor de chat!')
 print('Aguarde alguém conectar!')

 msg=input()
 while True:
  send.put(msg)
  msg=input()

 processo.join()
 tcp.close()
 exit()
  • you are using the same network?

  • 1

    u have to make a vpn (eg. using hamachi) or open a few ports in the router

  • The common solution is to use techniques to drill NAT, which is what P2P applications normally do (chat, games etc). Search for NAT Punch-through, UDP/TCP hole Punching, etc.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.