03/06/08 17:23
klez91
Salve! Scusate se posto in questa sezione spero sia giusta. Il mio problema è che sto scrivendo una chat in vb.net (di cui sotto il sorgente) e finquando faccio delle prove sul mio pc mettendo il mip Ip tutto funziona bene ma quando sono andato a fare delle prove con diversi miei amici nn sono riuscito a connettermi al server di nessuno di loro. Dopo numerosi tentativi, ho scoperto che facendo il ping dei loro indirizzi IP ricevo come output "Richiesta scaduta" mentre invece loro riescono a pingare il mio IP senza problemi. Mi chiedevo come è possibile ? In ogni caso ecco il codice del client...
... e quello del server....
Ho l'adsl tele2 nn so se possa servire. Scusate per il post un po lunghetto... grazie a tutti !
Imports System.Net.Sockets Public Class Form1 Public Client As New TcpClient Public NetStr As NetworkStream Private Sub tmrGetData_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles tmrGetData.Tick If Client.Connected Then If Client.Available > 0 And NetStr.CanRead Then Dim Bytes(Client.ReceiveBufferSize) As Byte NetStr.Read(Bytes, 0, Client.ReceiveBufferSize) Dim S As String = System.Text.ASCIIEncoding.ASCII.GetString(Bytes) txtRicevuto.Text = S End If End If End Sub Private Sub cmdSend_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles cmdSend.Click If Client.Connected Then If NetStr.CanWrite Then Dim Bytes() As Byte = _ System.Text.ASCIIEncoding.ASCII.GetBytes(txtSend.Text) NetStr.Write(Bytes, 0, Bytes.Length) End If End If txtSend.Text = "" End Sub Private Sub cmdConnetti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnetti.Click Client.Connect(txtIP.Text, 4156) If Client.Connected Then NetStr = Client.GetStream cmdConnetti.Text = "Disconnetti" cmdConnetti.Name = "cmdDisconnetti" End If End Sub End Class
... e quello del server....
Imports System.Net.Sockets Public Class Form1 Public Client As New TcpClient Public NetStr As NetworkStream Public Listener As New TcpListener(4156) Private Sub tmrControlConnection_Tick(ByVal sender As Object, _ ByVal e As EventArgs) Handles tmrControlConnection.Tick If Listener.Pending Then Client = Listener.AcceptTcpClient NetStr = Client.GetStream tmrControlConnection.Stop() Listener.Stop() tmrGetData.Start() End If End Sub Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load Listener.Start() End Sub Private Sub tmrGetData_Tick(ByVal sender As Object, _ ByVal e As EventArgs) Handles tmrGetData.Tick If Client.Connected Then If Client.Available > 0 And NetStr.CanRead Then Dim Bytes(Client.ReceiveBufferSize) As Byte NetStr.Read(Bytes, 0, Client.ReceiveBufferSize) Dim S As String = System.Text.ASCIIEncoding.ASCII.GetString(Bytes) txtReceved.Text = S End If End If End Sub Private Sub cmdSend_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles cmdSend.Click If Client.Connected Then If NetStr.CanWrite Then Dim Bytes() As Byte = _ System.Text.ASCIIEncoding.ASCII.GetBytes(txtSend.Text) NetStr.Write(Bytes, 0, Bytes.Length) End If End If End Sub End Class
Ho l'adsl tele2 nn so se possa servire. Scusate per il post un po lunghetto... grazie a tutti !
aaa