Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    197

    [vb.net] Problemi di comunicazione System.Net.Sockets tra sistemi operativi diversi.

    Salve a tutti ho il seguente problema ho creato un software che utilizza System.Net.Sockets
    e System.Text.UTF8Encoding ho programmato tutto e quando sono andato a testarlo ho notato che ci sono problemi enormi in quantop client server nn parlano tra di loro le mie prove sono state le seguenti :

    1) windows xp (Server) - windowsxp ( client ) --------> tutto funziona a dovere client e server parlano senza problemi

    2) windows xp ( server ) - windows 7 (client ) --------> tutto funziona bene come sopra

    3) windows 7( server ) -windows xp (client ) ----------> niente da fare nn ne vogliono sapere di parlare

    4) windows 7 (server)- windows 7 (client localhost )-------> funzina tutto a dovere

    quindi la mia domanda è la seguente possibile che sia un errore di programmazione oppure di qualche protocollo di protezione a me sconosciuto, premetto che il firewall di 7 ha l'eccezione e lavoravo nella stessa lan.

    vi passo i dati esempio di un serverr ascolta e un client connetti

    Server Ascolta
    codice:
     Listener = New TcpListener(1840)
            Listener.Start()
            tmrConnections.Start()
            btnListen.Enabled = False
            btnConnect.Enabled = False
            txtLog.AppendText("Server - in ascolto..." & Environment.NewLine)
    codice:
     Private Sub tmrConnections_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrConnections.Tick
            'Se ci sono connessioni...
            If Listener.Pending() Then
                'Ferma un attimo il timer
                tmrConnections.Stop()
    
                'Chiede all'utente se confermare la connessione
                If MessageBox.Show("Rilevato un tentativo di connessione. Accettare?", Me.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    'Ottiene l'oggetto TcpClient collegato al client
                    Client = Listener.AcceptTcpClient()
                    'Ferma il listener
                    Listener.Stop()
                    'Ottiene il network stream
                    NetStream = Client.GetStream()
                    'E attiva/disattiva i controlli per quando si è connessi
                    EnableControls(True)
                Else
                    Listener.Stop()
                    Listener.Start()
                    tmrConnections.Start()
                End If
            End If
        End Sub

    Client connetti
    codice:
      Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
            Dim Porta As Integer
    
            'Prima esegue un controllo sull'indirizzo IP per 
            'controllare che sia valido
      
            'Quindi inizializza un client e tenta la connessione
            'al dato IP sulla porta 5000
            For Porta = "1830" To "1840" Step "1"
    
                Client = New TcpClient()
                txtLog.AppendText("Client - tentativo di connessione..." & vbCrLf)
                Try
                    Application.DoEvents()
                    Client.Connect(txtIP.Text, Porta)
                Catch Ex As Exception
    
                End Try
    
                'Se la connessione ha avuto successo, ottiene il network
                'stream e agisce sui controlli come nel codice precedente
                If Client.Connected Then
                    txtLog.AppendText("Tentativo di connessione riuscito!" & vbCrLf)
                    NetStream = Client.GetStream()
                    EnableControls(True)
                    Exit Sub
                Else
                    txtLog.AppendText("Tentativo di connessione fallito..." & vbCrLf)
                End If
            Next
        End Sub

    PS il software è stato scritto in framework 3.5 ( sono sicuro al 99%) e con visual studio 2010

  2. #2
    Che tipo di problema/errore hai riscontrato? Per caso questo?
    WSAECONNABORTED (10053)
    Se si, per caso c'è qualche firewall che blocca? Hai McAfee come antivirus?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    197
    No il firewall ha l'eccezione sulle porte e uso nod 32 businees edition

    nessun errore semplicemente txtLog.AppendText("Tentativo di connessione fallito..." & vbCrLf)

  4. #4
    Originariamente inviato da nandoar
    nessun errore semplicemente txtLog.AppendText("Tentativo di connessione fallito..." & vbCrLf)
    Si, ma se il tentativo di connessione fallisce ci sarà un motivo. Dovresti fare in modo di visualizzare l'eccezione ricavata.

    Inoltre ho visto questo:
    For Porta = "1830" To "1840" Step "1"
    Se da una parte funzionalmente è corretto, formalmente è un errore in quanto la variabile Porta è di tipo Integer e il range che hai fornito è di tipo String. Inoltre lo Step di default è 1, quindi è ininfluente inserirlo.
    Così è formalmente più corretto:
    codice:
    for Porta = 1830  to  1840
    Se il problema persiste, potresti resettare Winsock su WinXp ma prima vorrei conoscere il problema riscontrato..


    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    197
    Purtroppo nn so far vedere il codice di errore con l'eccezione, nn conoscendo questa parte di codice cosa dovre inserire ?
    sei stato chiarissimo ma nn dovrebbe avvenire un cast implicito da string a int? cmq provo a modificare come hai detto tu... nn sto utilizzando mswinsock ma il soket del framework credo nn siano la stessa cosa ... dimmi tu

    ps ho disabilitato l'antivirus e il firewall dell antivirus ma il problema resta

    ho modificato il codice come mi hai detto tu e nn va uff

  6. #6
    Originariamente inviato da nandoar
    Purtroppo nn so far vedere il codice di errore con l'eccezione, nn conoscendo questa parte di codice cosa dovre inserire ?
    Qui:
    codice:
    Try
        Application.DoEvents()
        Client.Connect(txtIP.Text, Porta)
    Catch Ex As Exception
        'metti un MsgBox che esplora l'eccezione o altro tipo di output
    End Try

    Originariamente inviato da nandoar
    sei stato chiarissimo ma nn dovrebbe avvenire un cast implicito da string a int?
    Certo, però questi automatismi di VB "abituano" male il programmatore e, se un giorno passerai ad altri linguaggi, ti renderai conto che saranno considerati errori veri e propri o quantomeno warning (dipende dal compilatore..).


    Originariamente inviato da nandoar
    nn sto utilizzando mswinsock ma il soket del framework credo nn siano la stessa cosa ... dimmi tu
    Mi riferivo alla possibilità di LSP malfunzionante, in quel caso se il problema è legato a questo resettando winsock (tramite il comando DOS netsh) tutto si risolve.


    Originariamente inviato da nandoar
    ho modificato il codice come mi hai detto tu e nn va uff
    Non è possibile..


    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    197
    Try
    Application.DoEvents()
    Client.Connect(txtIP.Text, Porta)
    Catch Ex As Exception
    'metti un MsgBox che esplora l'eccezione o altro tipo di output
    End Try
    catch ex as exception
    msgbox ("errore" & ex, vbonlyok , "errore")

    il codice che avevo cambiato er quello che evitav il cast implicito dello string to int




    ecco l'errore
    ************** Testo dell'eccezione **************
    System.ArgumentException: Impossibile convertire l'argomento 'Prompt' nel tipo 'String'.
    in Microsoft.VisualBasic.Interaction.MsgBox(Object Prompt, MsgBoxStyle Buttons, Object Title)
    in WindowsApplication1.Form1.btnConnect_Click(Object sender, EventArgs e)
    in System.Windows.Forms.Control.OnClick(EventArgs e)
    in System.Windows.Forms.Button.OnClick(EventArgs e)
    in System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
    in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    in System.Windows.Forms.Control.WndProc(Message& m)
    in System.Windows.Forms.ButtonBase.WndProc(Message& m)
    in System.Windows.Forms.Button.WndProc(Message& m)
    in System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
    in System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
    in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Assembly caricati **************
    mscorlib
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    WindowsApplication1
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Documents%20and%20Settings/Administrator/Documenti/WindowsApplication1.exe
    ----------------------------------------
    Microsoft.VisualBasic
    Versione assembly: 8.0.0.0
    Versione Win32: 8.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    ----------------------------------------
    System
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Windows.Forms
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Runtime.Remoting
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
    ----------------------------------------
    System.Configuration
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    Microsoft.VisualBasic.resources
    Versione assembly: 8.0.0.0
    Versione Win32: 8.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic.resources/8.0.0.0_it_b03f5f7f11d50a3a/Microsoft.VisualBasic.resources.dll
    ----------------------------------------
    System.Windows.Forms.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    mscorlib.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.1433 (REDBITS.050727-1400)
    Base di codice: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------

    ************** Debug JIT **************
    Per attivare il debug JIT, necessario impostare il valore
    jitDebugging nella sezione system.windows.forms del file di configurazione
    dell'applicazione o del computer (machine.config).
    L'applicazione inoltre deve essere compilata con il debug
    attivato.

    Ad esempio:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    Quando il debug JIT attivato, tutte le eccezioni non gestite
    vengono inviate al debugger JIT registrato nel computer,
    anzich essere gestite da questa finestra di dialogo.


    anche se nn capisco perche solo quando windows 7 è il server succede sto macello ... l'errore mi esce anche nei casi in cui funzionava bene adesso nn ci capisco piu nulla prima anche con l'errore colloquiava e con win 7 no bha sono confuso

  8. #8
    Certo, il 1° argomento della funzione MsgBox è di tipo String , mentre te hai messo ex che è di tipo System.Exception.
    Il codice corretto è questo:
    codice:
      
    MsgBox(ex.Message.ToString)

    Fammi sapere


    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    197
    L'errore è il seguente :

    Impossibile stabilire la connessione. risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato 192.168.1.9:1830

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    197
    secondo voi come posso ovviare questo problema ho provato anche con hamachi che bypassa parecchie protezioni ma niente nn va

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.