Oppure

Loading
09/09/09 10:02
marco1
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:
TcpServer.SendData txtSendData.text



aaa
09/09/09 10:41
GrG
1) non si vede il link
2) che tipo di errore?
aaa
09/09/09 10:52
marco1
... 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
aaa
09/09/09 14:40
GrG
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...
aaa
10/09/09 17:42
marco1
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:
aaa
10/09/09 19:15
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)
aaa
10/09/09 19:30
theprogrammer
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 ...
aaa
10/09/09 20:10
marco1
... eeee.... come si fà??? :D :D :D
aaa