Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Winsock
Forum - Visual Basic 6 - Winsock

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 12:02
Mercoledì, 09/09/2009
Salve... io ho cominciato ad usare l' .OCX winsock da poco e volevo povare il protocollo TCP quindi ho letto qualcosina dulle librerie MSND e ho trovato questo:



io l'ho seguito alla lettera. quando ho provato il programma... io premo il pulsante conetti e fin la tutto OK... poi scrivo qualcosa nella txtSendData e mi da errore nella linea:        
Codice sorgente - presumibilmente Plain Text

  1. TcpServer.SendData txtSendData.text





PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 12:41
Mercoledì, 09/09/2009
1) non si vede il link
2) che tipo di errore?

PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 12:52
Mercoledì, 09/09/2009
... si scusa ho avuto dei problei con il PC...
------------------------------------------------------------------------------------------
Nozioni fondamentali sulla connessione TCP
Quando si crea un'applicazione che utilizza il protocollo TCP, è innanzitutto necessario decidere se tale applicazione sarà server o client. Se l'applicazione è un server rimarrà in "ascolto" su una determinata porta. Quando il client invia una richiesta di connessione, il server potrà accettare tale richiesta e completare la connessione. Client e server potranno quindi comunicare.

La seguente procedura consente di creare un semplice server:

Per creare un server TCP

Creare un nuovo progetto EXE standard.


Assegnare al form predefinito il nome frmServer.


Modificare la didascalia del form in "Server TCP".


Trascinare un controllo WinSock nel form e modificarne il nome in tcpServer.


Aggiungere nel form due controlli casella di testo. Denominare il primo txtSendData e il secondo txtOutput.


Specificare per il form il codice riportato di seguito.
Private Sub Form_Load()
' Imposta su un intero la proprietà LocalPort.
' Richiama quindi il metodo Listen.
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show ' Visualizza il form client.
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
' Verifica se il valore della proprietà State
' è sckClosed. In caso contrario, chiude la
' connessione prima di accettare quella nuova.
If tcpServer.State <> sckClosed Then _
tcpServer.Close
' Accetta la richiesta con il parametro
' requestID.
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
' Il controllo casella di testo denominato
' txtSendData contiene i dati da inviare.
' Quando l'utente digita una stringa nella
' casella di testo, tale stringa viene inviata
' con il metodo SendData.
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
' Dichiara una variabile per i dati in ingresso.
' Richiama il metodo GetData e assegna i dati
' alla proprietà Text del controllo casella di
' testo txtOutput.
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub

Il codice sopra riportato consente di creare una semplice applicazione server. Per completare l'esempio è tuttavia necessario creare anche un'applicazione client.

Per creare un client TCP

Aggiungere un nuovo form nel progetto e denominarlo frmClient.


Modificare la didascalia del form in "Client TCP".


Aggiungere un controllo WinSock nel form e denominarlo tcpClient.


Aggiungere in frmClient due controlli casella di testo. Denominare il primo txtSend e il secondo txtOutput.


Disegnare un controllo pulsante di comando nel form e denominarlo cmdConnect.


Modificare la didascalia del controllo pulsante di comando in "Connetti".


Specificare per il form il codice riportato di seguito.
Importante   Assicurarsi di sostituire il valore della proprietà RemoteHost con il nome del computer.

Private Sub Form_Load()
' Il nome del controllo WinSock è tcpClient.
' Nota: per specificare un host remoto, è possibile
' utilizzare l'indirizzo IP (es: "121.111.1.1")
' oppure il nome del computer, come qui indicato.
tcpClient.RemoteHost = "NomeComputerRemoto"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
' Richiama il metodo Connect per stabilire una
' connessione.
tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub

Il codice sopra riportato crea una semplice applicazione di tipo client-server. Per verificarne il funzionamento, eseguire il progetto e fare clic sul pulsante Connetti. Digitare quindi del testo nel controllo casella di testo txtSendData di un form: lo stesso testo verrà visualizzato nel controllo casella di testo txtOutput del secondo form.
------------------------------------------------------------------------------------------
E il errore e 40006

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:40
Mercoledì, 09/09/2009
ok, allora al frmClient elimina il codice della form_load e sostituisci
tcpClient.Connect
con:
tcpClient.Connect "127.0.0.1", 1001

127.0.0.1 sarebbe il tuo ip locale, altrimenti se dai il prog a un'altro devi inserire il suo ip pubblico...

PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 19:42
Giovedì, 10/09/2009
Gerazie... ora funziona... se invio i dati a me stesso con l'IP che hai scritto tu funziona... Per IP pubblico devo ancora dare l'.exe ad un amicho e poi sapro dirti...

grazie :rotfl:

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:15
Giovedì, 10/09/2009
si, però se ha un router non funziona, tocca fare il port forwading (spero di averlo scritto bene xD) ossia aprire le porte che usa il tuo progr (nel tuo caso la 1001)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:30
Giovedì, 10/09/2009
Testo quotato

Postato originariamente da GrG:

si, però se ha un router non funziona, tocca fare il port forwading (spero di averlo scritto bene xD) ossia aprire le porte che usa il tuo progr (nel tuo caso la 1001)



port forwarding

;)

E' necessario ... anche se con alcuni router viene chiamato in modo diverso ...

PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 22:10
Giovedì, 10/09/2009
... eeee.... come si fà??? :D :D :D

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:19
Giovedì, 10/09/2009
Attraverso l'interfaccia di configurazione del router (in genere, il router ha un web server interno con cui collegarsi per configurarlo). Ovviamente la cosa cambia da router a router ed e'

OT

in questo forum in quanto non e' un problema di programmazione VB6 (semmai un problema di "rete").


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo