envoie de message par internet
envoie de message par internet
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.
@++
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
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
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.
@++
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.

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
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.

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.

@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?
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?
ok no souci.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...
et bien aa cause du travail je ne pourrais commencer que ce week end.
donc vendredi soir, façon je suis en congés


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

re ps: oui Mytic sa peut toujours servir

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
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.

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.

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
.
http://venompb.free.fr/purechatreseauclient.pb
http://venompb.free.fr/purechatreseauserveur.pb
voila
@++
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

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

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
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Voila chef!
Client :
Server :
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
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