envoie de message par internet

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

envoie de message par internet

Message par venom »

bonjour,

voila une fois j'ai fait un programme qui consiste a parler d'ordinateur en ordinateur en reseau local , avec un serveur et un client en entrant l'adresse ip.

bon jusque la rien de compliquer mais, est ce que ce procédé est possible avec un ami a l'autre bout de la france ??. donc pas par reseau local mais avec son ip d'internet ou autre systeme.

voila d'avance merci et bonne journée.


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

c'est tout à fait possible, cela marche avec le même principe à partir du moment ou un routeur ne barre pas l'accès réseau.
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

a ok donc au lieu de rentrée une ip de carte reseau on entre l'ip de connexion de la personne c'est bien sa ?.

ex: au lieu de: 192.168.0.1
on met: 84.5.102.38

faudrais que je test alors.

d'avance merci fin si j'ai bien compris.:wink:



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Mais attention, ça ne marcha pas si la machine qui exécutera le serveur soit derrière un Routeur (un routeur non configuré) , mais avec un modem ça marche tout seul ^^
Le problème avec un Routeur, c’est que c’est lui qui gère les connections, parce que à chaque ligne téléphonique ou ADSL y’a qu’une seul adresse IP, donc quand ils y’a plusieurs PC connectés au routeur celui ci ne peut pas donner la même adresse IP à chaque pc, donc il crée des fausse adresse IP souvent des 192.168.X.X qui ne marche quand local, et c’est faut adresse IP sans en fait que des port. A chaque PC un port.
Bon ça c’est qu’une représentation vague, mais c’est que pour te donner une idée.
Donc si t’as un routeur et le destinataire aussi, alors vaut mieux que ce soit toi le Serveur
Comme ça tu configure ton réseau Nat du routeur, et tu configure un Port spécial qui te redirige directe sur ton Pc. Et le destinataire tu lui donne le programme Client, comme ça lui il ne configura rien.

Voilà le résumer :
Dans la machine où le serveur s’exécutera :
- tu configure ton routeur, en créant un Port qui redirige vers ton PC
- tu utilises le même Port lors de la création du serveur.
- Et voilà.

Dans la machine ou le programme client s’exécutera :
- tu lui donnes ton adresse IP
- et le tour est joué.

Bon une petite astuce, souvent les gens en peur de donner leur adresse IP.
Alors il suffit de crée un logarithme de cryptage qui cryptera ton adresse IP et te donnera une adresse codé, et c’est celle la que tu donnera au client.
Alors le programme client va la décrypter et l’utiliser.
Comme ça au lieu de passer une adresse du genre 255.255.0.1
Tu lui passe par exemple ça : ASJSYHGD7652HDSD.

Aller Bon courage.
:D
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

et bien merci pour cette explication bien expliquer :D .

je testerais sa je vous tien au courant bon aller je me remet au codage alors :) .


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@mytic

c'est sympa ton expli. Un petit peu vague mais au moins ça donne les grandes lignes. Parce qu'à mon avis entre l'idée et le fait concret de 2 EXE séparés de x kilomètres qui s'échangent des blocs mémoire, il y a un grand fossé à franchir.

Moi, je serai partant pour qu'on se fasse un mini-projet consacré au final à ça : échanger des blocs mémoire. Si on arrive à poster 2 codes fiables (serveur et client) sur le forum, ce sera le pérou!

@venom
Si t'as besoin d'un testeur de source client, n'hésite pas! Pour ma part, ça risquera de venir aussi de demander un testeur...

>> Pour le cryptage de l'IP, on peut utiliser les crypteurs de PB + une clé XOR éventuellement. Mais est-ce que c'est vraiment utile vu que notre IP nous suit et se balade un peu partout sur Internet? Quels sont les risques aussi? Peut-on se faire exécuter un code étranger en divulguant son IP? Ou est-ce plus de l'ordre du piratage ou de la perturbation de notre ligne?
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

j'ai déjà crée plusieurs programmes et jeux qui utilise une connexion serveur/client en Purebasic , et un programme comme l’MSN (WLM) aussi mais avec un autre langage de programmation.
Si vous voulez, je peu vous poster mes Codes sources et des exemples simplifiés.
:wink:
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

Si t'as besoin d'un testeur de source client, n'hésite pas! Pour ma part, ça risquera de venir aussi de demander un testeur...
ok no souci.

et bien aa cause du travail je ne pourrais commencer que ce week end.
donc vendredi soir, façon je suis en congés :P . je bosserais dessus :wink: .

ps: je ne promet rien mais j'ai déja réussi en reseau local mais y'a longtemps. on verra bien. :wink:

re ps: oui Mytic sa peut toujours servir :wink: .



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@mytic

Ce serait bien urbain pour les sources. C'est en C++?
Mytic
Messages : 466
Inscription : mer. 25/juil./2007 0:13

Message par Mytic »

Dsl pour le retard ,
Alors : @Ollivier
Non… non c’était en VB , car j’utilisai l’API Winshock.
Sinon pour le mini_projet ça serait vraiment sympa.

A propos : @venom
Tu peut utiliser une autre astuce pour les IP en les stockant sur un serveur FTP comme je fais moi , en les enregistrant dans un fichier qui sera nommé en adresse (comme par exemple xxxxxx@homail.com) , et comme ça tu donne au client seulement ton adresse et le programme se charge de tout faire.
Bon… c’est ma façon de procéder, alors si tu veux l’adopté elle te sera d’une grande utilité et c’est vraiment pratique que les IP à l’état brute.
:wink:
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

bonjour,

voila j'ai un service a demandé a une epoque ( pb 3.94 ) :) .

j'avais fait ce genre de programme mais pour reseau local.

j'ai essayer de le convertir pb4 :? pas moyen ,pensez vous que c'est possible ???.

au pire voici les ressources car sa m'arrangerais de ne pas tout recommancer :wink: .

http://venompb.free.fr/purechatreseauclient.pb
http://venompb.free.fr/purechatreseauserveur.pb

voila


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Voila chef!
Client :

Code : Tout sélectionner

;-Init Variables 
Enumeration 
  #clientinfo 
  #client 
  #info 
  #msg 
  #send 
  #users 
  #enter 
  #txt1 
  #txt2 
  #txt3 
  #clientname 
  #ip 
  #port 
  #ok 
  #kill 
  #textepseudo
  #ComboBox_0
  #pseudo
EndEnumeration 

text.s
cr.s
clientname.s
name.s
IP.s
check .s
check=Chr(159)
maxbuffer.l=1000 
*Buffer=AllocateMemory(maxbuffer)

adresseip$ =  InputRequester("option connexion", "veuillez entree l'adresse ip du serveur",adresseip$)
pseudo$ =  InputRequester("pseudo", "choisissez un pseudo",pseudo$)
space$ = Space(2) 

;-Init Network 
InitNetwork()
ConnectionID  = OpenNetworkConnection(adresseip$, 6588)
If ConnectionID = 0
MessageRequester("erreur", "purechat reseau n'a pas pu se connecter au serveur",#MB_ICONERROR)
End
EndIf

hWnd=OpenWindow(#client,0,0,800,620,"purechat reseau",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget) 
If hWnd=0 Or CreateGadgetList(hWnd)=0:End:EndIf 
EditorGadget(#info,10,10,600,515)
EditorGadget(#pseudo,620,10,172,515)
DisableGadget(#pseudo, 1)
StringGadget(#msg,10,560,665,40,"") 
TextGadget(#textepseudo, 11, 603,774,15,"connecter en tant que :  "+ pseudo$)
ButtonGadget(#send,690,565,100,30,"envoyer") 
AddKeyboardShortcut(#client,#PB_Shortcut_Return,#enter) 
SetActiveGadget(#msg) 

  Repeat 
    CEvent.l=NetworkClientEvent(ConnectionID)
    EventID=WindowEvent() 
    
    If CEvent Or EventID 
      If EventID=#PB_Event_CloseWindow 
        quit=1 
      EndIf 
      
      If EventID=#PB_Event_Menu 
        Select EventMenu() 
          Case #enter 
            sendmessage=1
        EndSelect 
      EndIf 
      
      If EventID=#PB_Event_Gadget 
        Select EventGadget() 
          Case #send 
            sendmessage=1 
        EndSelect 
      EndIf 
      
      Select CEvent 
      
        Case 2 
          length=ReceiveNetworkData(ConnectionID,*Buffer,maxbuffer) 
           text=PeekS(*Buffer,length) 
            pos=FindString(text,":",1) 
             AddGadgetItem(#info,-1,text) 
              SendMessage_(GadgetID(#info),#EM_LINESCROLL,0,2) 
               FlashWindow_(hWnd,1) 
                
        Case 3
          ReceiveNetworkFile(ConnectionID,"users."+Str(port)) 
          ClearGadgetItemList(#users) 
          If ReadFile(0,"users."+Str(port)) 
            While Eof(0)=0 
              name=ReadString(0) 
              AddGadgetItem(#users,-1,pseudo$) 
            Wend 
            CloseFile(0) 
          EndIf 
      EndSelect 

      If sendmessage=1 
        sendmessage=0 
        oldtime=ElapsedMilliseconds() 
        text=Chr(139)+space$+pseudo$+space$+"dit"+space$+Chr(155)+space$+(texte$)+GetGadgetText(#msg)  
        PokeS(*Buffer,text,Len(text)) 
        SendNetworkData(ConnectionID,*Buffer,Len(text)) 
        SetGadgetText(#msg,"") 
        SetActiveGadget(#msg) 
      EndIf 
      
      Else 
      Delay(10) 
    EndIf 
  Until quit 
  CloseNetworkConnection(ConnectionID) 
End 
; IDE Options = PureBasic v3.94 (Windows - x86)
; CursorPosition = 42
; FirstLine = 17
; Folding = -
; UseIcon = ..\..\..\Documents and Settings\D1K\Mes documents\Axialis Librarian\Icons\purechat reseau.ico
; Executable = ..\..\..\Documents and Settings\D1K\Bureau\purechat reseau.exe
Server :

Code : Tout sélectionner

;-Init Variables 
Enumeration 
#server
#info
#msg
#send
#users 
#enter
#clientinfo
#txt1
#port
#ok
#textepseudo
#ComboBox_0
#textepseudo_1
#pseudo
EndEnumeration

pseudo$ =  InputRequester("pseudo", "choisissez un pseudo",pseudo$)
space$ = Space(2) 

clientname.s
text.s
cr.s
check.s
check=Chr(159)

maxbuffer.l=1000 
*Buffer=AllocateMemory(maxbuffer) 

Structure userinfo 
id.l 
time.l 
name.s 
EndStructure 
NewList user.userinfo() 

;-Init Network 
If InitNetwork() = 0 
MessageRequester("Erreur", "le serveur n'a pas pu etre cree", #MB_ICONERROR) 
End 
EndIf

If CreateNetworkServer(0, 6588)

If OpenWindow(#server,1,0,800,620,"purechat reseau",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) 
 If CreateGadgetList(WindowID(#server)) 
    EditorGadget(#info,10,10,600,515)
    EditorGadget(#pseudo,620,10,172,515)
    DisableGadget(#pseudo, 1)
    StringGadget(#msg,10,560,665,40,"") 
    TextGadget(#textepseudo, 11, 603,774,15,"connecter en tant que :  "+ pseudo$)
    ButtonGadget(#send,690,565,100,30,"envoyer") 
    AddKeyboardShortcut(#server,#PB_Shortcut_Return,#enter)
    SetActiveGadget(#msg) 
 EndIf
 
;-Main Program  

 Repeat 
  SEvent.l=NetworkServerEvent() 
   EventID=WindowEvent() 

  If SEvent Or EventID 
   If EventID=#PB_Event_Menu 
    Select EventMenu() 

      Case #pseudo
       AddGadgetItem(#pseudo,-1,pseudo$)
       
      Case #enter 
       sendmessage=1 
     EndSelect 
    EndIf 
    
If EventID=#PB_Event_Gadget 
 Select EventGadget() 
  
  Case #send 
   sendmessage=1 
   ;SendNetworkString(ClientID, pseudo$)
 EndSelect 
EndIf 

If SEvent 
 ClientID=EventClient() 
  ResetList(user()) 
 While NextElement(user()) 
If ClientID=user()\id 
  LastElement(user()) 
EndIf 
Wend 


Select SEvent 

Case 1 
 AddElement(user()) 
  user()\id=ClientID 
   user()\time=ElapsedMilliseconds() 

Case 2 
 length=ReceiveNetworkData(ClientID,*Buffer,maxbuffer) 
  text.s=PeekS(*Buffer,length) 
   If Left(text,1)=check 
    user()\name=Mid(text,2,Len(text)) 
     clientname=user()\name 

   Else 
    text=clientname+""+text 
EndIf 

;SetRichEditText(#info,-1,-1,text+cr) 
AddGadgetItem(#info,-1,text) 
SendMessage_(GadgetID(#info),#EM_LINESCROLL,0,2) 
PokeS(*Buffer,text,Len(text)) 

ResetList(user()) 
While NextElement(user()) 
If ElapsedMilliseconds()-user()\time>600000 
 CloseNetworkConnection(user()\id) 
  DeleteElement(user()) 
   fix=1 
Else 
If user()\id=ClientID 
 user()\time=ElapsedMilliseconds() 
EndIf 
 SendNetworkData(user()\id,*Buffer,Len(text)) 
EndIf 
Wend 

Case 4 
 ;SetRichEditText(#info,-1,-1,text+cr) 
  AddGadgetItem(#info,-1,text) 
   SendMessage_(GadgetID(#info),#EM_LINESCROLL,0,2) 
    PokeS(*Buffer,text,Len(text)) 
     ResetList(user()) 
While NextElement(user()) 
 SendNetworkData(user()\id,*Buffer,Len(text)) 
Wend 
 ResetList(user()) 
While NextElement(user()) 
If user()\id=ClientID 
 DeleteElement(user()) 
  LastElement(user()) 
EndIf 
Wend 

  CloseNetworkConnection(ClientID) 
 EndSelect 
EndIf 

If sendmessage=1 
 sendmessage=0 
  text=Chr(139)+space$+pseudo$+space$+"dit"+space$+Chr(155)+space$+(texte$)+GetGadgetText(#msg) 
; SetRichEditText(#info,-1,-1,text+cr) 
   AddGadgetItem(#info,-1,text) 
    SendMessage_(GadgetID(#info),#EM_LINESCROLL,0,2) 
     PokeS(*Buffer,text,Len(text)) 
      ResetList(user()) 
       While NextElement(user()) 
        SendNetworkData(user()\id,*Buffer,Len(text)) 
       Wend 
         SetGadgetText(#msg,"") 
          SetActiveGadget(#msg) 
EndIf 

Else 
Delay(10) 
 EndIf 
  Until EventID=#PB_Event_CloseWindow 
   CloseNetworkServer(0) 
  EndIf 
 EndIf
End 
; IDE Options = PureBasic 4.10 Beta 1 (Windows - x86)
; CursorPosition = 21
; FirstLine = 21
; Folding = -
; Executable = ..\..\..\Documents and Settings\D1K\Bureau\purechat reseau s.exe
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Il ma devancé lol :lol:
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

8O mais comment vous étez trop balaise j'allucine.

merci, mais comment tu a fait a cette vitesse la ???


encore merci sa m'arrange beaucoup de ne pas tout retappé :wink:

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Ben... euh... Ben...
F5 > Plantage > Modif > F5 > Plantage > Modif etc... ^^
Répondre