Problème avec un chat

cs_LycanOSX Messages postés 58 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 14 juillet 2013 - 28 déc. 2012 à 18:20
cs_LycanOSX Messages postés 58 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 14 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!

3 réponses

Utilisateur anonyme
28 déc. 2012 à 20:22
Bonsoir,

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.
0
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
28 déc. 2012 à 20:27
Bonjour,

Peut être voir :
http://www.vbfrance.com/doc/faq.aspx#common_nat

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
0
cs_LycanOSX Messages postés 58 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 14 juillet 2013 3
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!
0
Rejoignez-nous