Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB] Winsock (client/server)

    Salve ragazzi,

    Sto cercando di capire come funziona esattamente il componente
    WINSOCK con VB.

    Sto sviluppando una semplicissima applicazione Client/Server
    sul mio PC (in LoopBack 127.0.0.1)

    Naturalmente utilizzo 2 distinti programmi scritti in Visual Basic 6
    Il primo fa da CLIENT ed il secondo è il SERVER.

    Dove sono arrivato!!:

    1)il programma SERVER ascolta sulla porta di default, la 10101
    2)il CLIENT tramite un bottone al server e gli invia una stringa
    con scritto il nome del computer ossia "CLIENT_1"
    3)il SERVER accetta la connessione e visualizza in una casella
    di testo il nome del client.

    QUESTO STA A TESTARE CHE I DATI PASSATI DAL CLIENT
    SONO ARRIVATI AL SERVER.

    Il mio problema e che non ho capito come si fa la cosa OPPOSTA

    Mi spiego meglio:

    All'avvenuta connessione del client con il server
    vorrei che il SERVER (automaticamente) senza premere
    nessun bottone...
    mi mandi INDIETRO una stringa (da poter visualizzare sul client!!!

    IN SINTESI:

    Il client INVIA una stringa al SERVER, Il SERVER la visualizza
    e automaticamente mi INVIA un'altra stringa sul CLIENT.


    Come si FA!!!

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    devi usare gli eventi tipo DataArrival e i metodi tipo SendData (mi sembra) ti sconsiglio di usare il loopback, potresti avere problemi di stack overflow

    per inviare dati devi verificare le varie firme dei vari metodi, mi sembra ce ne sia una che specifica il buffer di trasmissione....

  3. #3
    VI spiego meglio (SCHEMATIZZANDO) quello che fa il programma:

    codice sul SERVER (mio PC):
    codice:
    Option Explicit
    
    Private Sub Form_Load()
        stringaGET = ""
        txtSTATE.Caption = "0 client Connected"
        Winsock.Close
        Winsock.Listen
    End Sub
    
    Private Sub Winsock_ConnectionRequest(ByVal RequestID As Long)
       'ACCETTO UNA RICHIESTA DI CONNESSIONE SULLA PORTA 10101 
       If Winsock.State <> sckClosed Then 
           Winsock.Close
           Winsock.LocalPort = 10101
           Winsock.Listen
        end if
        Winsock.Accept RequestID
        txtSTATE.Caption = "1 client Connected"
    End Sub
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''
    'NON SO SE QUESTA SUB DEVE STARE ANCHE SUL SERVER????
    Private Sub Winsock_Connect()
        'DICHIARO LA STRINGA CHE IL SERVER INVIA AL CLIENT
        'QUESTA SUB NON MI INVIA NULLA (al client)!!!!!!!!
        Dim stringaSEND As String
        stringaSEND = "Ciao Client_1"
        Winsock.SendData stringaSEND
    End Sub
    '''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Private Sub Winsock_DataArrival(ByVal BytesTotal As Long)
        'RECUPERO E VISUALIZZO LA STRINGA CHE MI HA INVIATO IL CLIENT
        Dim stringaGET as String
        Winsock.GetData stringaGET
        txtCLIENT_NAME.Caption = stringaGET
    End Sub
    
    Private Sub Winsock_Close()
        'CHIUDO LA CONNESSIONE
        Winsock.Close
        txtSTATE.Caption = "0 client Connected"
        txtCLIENT_NAME.Caption = ""
    End Sub
    Questo invece è il codice del CLIENT (sempre stesso PC del server)
    codice:
    Option Explicit
    
    Private Sub Form_Load()
        TxtIP.Text = "127.0.0.1"  '<--loopback address
        txtPORT.Caption = "10101" '<--default port 
        txtSTATE.Caption = "Disconnected"
    End Sub
    
    Private Sub cmdConnect_Click()
        'MI CONNETTO AL SERVER 
        Winsock.RemoteHost = TxtIP.Text
        Winsock.RemotePort = 10101
        txtPORT.Caption = Winsock.RemotePort
        If Winsock.State <> sckClosed Then Winsock.Close
        Winsock.Connect
    End Sub
    
    Private Sub Winsock_Connect()
        'SE MI CONNETTO INVIO UNA STRINGA AL SERVER
        'CON IL NOME DEL MIO CLIENT
        txtSTATE.Caption = "Connected to SERVER"
        Dim stringaSEND As String
        stringaSEND = "Client_1"
        Winsock.SendData stringaSEND
    End Sub
    
    Private Sub Winsock_DataArrival(ByVal BytesTotal As Long)
        'RICEVO LA STRINGA DI SALUTO CHE MI HA INVIATO IL SERVER
        '!!!!MA A ME, NON ARRIVA NESSUNA STRINGA!!!!!
        Dim stringaGET As String
        Winsock.GetData stringaGET
        TxtMESSAGGIO_DAL_SERVER.Text = stringaGET
    End Sub
    
    Private Sub CmdDisconnect_Click()
        Winsock.Close
        txtSTATE.Caption = "Disconnected"
    End Sub
    
    Private Sub Winsock_Error(ByVal Number As Integer, Description As String, _
        ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, _
        ByVal HelpContext As Long, CancelDisplay As Boolean)
        Winsock.Close
        txtSTATE.Caption = "Error: " & Description
    End Sub
    ALLORA:

    La stringa che io CLIENT invio al SERVER (sempre sul mio PC)
    ARRIVA e viene visualizzata sulla textBox del SERVER...

    INVECE...la stringa (di saluto) che il SERVER dovrebbe mandare a
    me CLIENT, non arriva e non viene quindi visualizzata nella
    textBox del CLIENT

    WHY!!!!

    P.S. quando avete un pò di tempo provate il codice e fatemi sapere

    Grazie e

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    se mi dai la tua e-mail ti mando un progettino che avevo realizzato.

    MAgari può esserti utile. E' una suite di scansione della rete sia locale che remota (portscan, telnet, client Smtp e altro)


  5. #5

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    il tempo di preparare il file .zip e ti mando tutto

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.