cs_LycanOSX
Messages postés58Date d'inscriptionmardi 21 septembre 2010StatutMembreDernière intervention14 juillet 2013
-
28 déc. 2012 à 18:20
cs_LycanOSX
Messages postés58Date d'inscriptionmardi 21 septembre 2010StatutMembreDernière intervention14 juillet 2013
-
28 déc. 2012 à 20:37
Bonjours tout le monde! Je travaille sur un chat très basique, mais il semble y avoir un problème, voilà, J'ai donné mon chat à un amis, nos ordinateurs étant distants l'un de l'autre, quand le programme lui demande l'IP, il tape l'IP que je lui ai donné, que j'ai eu grâce a monip.org, mais le logiciel lui dit que le serveur n'est pas lancé, alors il y à deux codes, un pour le serveur, un pour le client:
Le serveur (console):
Imports System.Net.Sockets
Imports System.IO
Imports System.Net
Module Module1
Private server As TcpListener
Private client As New TcpClient
Private ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000)
Private list As New List(Of Connection)
Private Structure Connection
Dim stream As NetworkStream
Dim streamw As StreamWriter
Dim streamr As StreamReader
Dim nick As String
Dim group As String
End Structure
Sub Main()
Console.WriteLine("Server launched!")
server = New TcpListener(ipendpoint)
server.Start()
While True
client = server.AcceptTcpClient
Dim c As New Connection
c.stream = client.GetStream
c.streamr = New StreamReader(c.stream)
c.streamw = New StreamWriter(c.stream)
c.nick = c.streamr.ReadLine
c.group = c.streamr.ReadLine
list.Add(c)
Console.WriteLine(c.group & " " & c.nick & " is now connected.")
Dim t As New Threading.Thread(AddressOf ListenToConnection)
t.Start(c)
End While
End Sub
Private Sub ListenToConnection(ByVal con As Connection)
Do
Try
Dim tmp As String = con.streamr.ReadLine
Console.WriteLine(con.group & " " & con.nick & ": " & tmp)
For Each c As Connection In list
c.streamw.WriteLine(con.group & " " & con.nick & ": " & tmp)
c.streamw.Flush()
Next
Catch
list.Remove(con)
Console.WriteLine(con.group & " " & con.nick & " is now disconnected.")
Exit Do
End Try
Loop
End Sub
End Module
Le client (form):
Imports System.Net.Sockets
Imports System.IO
Public Class Form1
Private stream As NetworkStream
Private streamw As StreamWriter
Private streamr As StreamReader
Private client As New TcpClient
Private t As New Threading.Thread(AddressOf Listen)
Private Delegate Sub DAddItem(ByVal s As String)
Private nick As String = "unknown"
Private RequestIP As String
Private group As String
Private Sub AddItem(ByVal s As String)
RichTextBox1.Text = RichTextBox1.Text & s & vbCrLf
End Sub
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Try
client.Connect(RequestIP, 8000)
If client.Connected Then
stream = client.GetStream
streamw = New StreamWriter(stream)
streamr = New StreamReader(stream)
streamw.WriteLine(nick)
streamw.WriteLine(group)
streamw.Flush()
t.Start()
Else
MessageBox.Show("The server isn't launched!")
Application.Exit()
End If
Catch ex As Exception
MessageBox.Show("The server isn't launched!")
Application.Exit()
End Try
End Sub
Private Sub Listen()
While client.Connected
Try
Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine)
Catch
MessageBox.Show("The server isn't launched!")
Application.Exit()
End Try
End While
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
streamw.WriteLine(TextBox1.Text)
streamw.Flush()
TextBox1.Clear()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RequestIP = InputBox("Choose the server IP:", "IP", "")
nick = InputBox("Choose a nickname for this server:", "Nickname", "")
If RequestIP "127.0.0.1" Or RequestIP "localhost" Then
group = "[Admin]"
Else
group = "[User]"
End If
End Sub
End Class
Je ne comprend pas quelqu'un pourrait il m'aider s'il vous plait? Merci beaucoup!
Commence par vérifier si ton port 8000 est accessible depuis l'extérieur (firewall, routeur etc...).
Ensuite, comme toutes les erreurs renvoient sur ta messagebox (The server isn't launched), on ne peut pas vraiment connaître la véritable nature de l'erreur. Donc pour obtenir un message plus explicite, vire les blocs try/catch et observe ce qui se passe.
v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site
cs_LycanOSX
Messages postés58Date d'inscriptionmardi 21 septembre 2010StatutMembreDernière intervention14 juillet 20133 28 déc. 2012 à 20:37
J'ai fait une tentative en désactivant le firewall, je vais maintenant tenter en ouvrant le poort sur mon routeur, je n'y avait pas pensais! (je suis quand même bête puisque je l'ai déjà fait pour un serveur FTP) Et merci NHenry, je vais regarder de plus prés les informations que tu m'a donné, je pourrait refaire des tests que demains au plus tôt, je vous dirait ce que ça donne! Merci encore!