Oppure

Loading
11/07/08 10:38
luca94
Ciao a tutti,
ho appena iniziato a programmare con winsock in visual basic 6.0 e ho un problemino: ho creato due progetti in vb, un client e un server nei quali ho inserito un winsock ciascuno. Le proprietà del winsock del client e del server sono uguali e lo impostate così:
LocalPort : 666
RemotePort : 666
Nel client ho associato un TextBox al RemoteHost (nella quale inserire l' IP) con l' apposito tasto connetti.
Vorrei comandare al server (attraverso il client) di darmi un MsgBox con scritto "Ciao". Ma se inserisco il mio IP nella textbox (nel client), apro il server, e nel client premo connetti mi dice "adress in use". Come mai??
Ecco il codice del client:
Private Sub Command1_Click()
Winsock1.RemoteHost = Text1.Text
Winsock1.Connect
End Sub

Private Sub Command3_Click()
Winsock1.SendData "messaggio"
End Sub


Ecco il codice del server:
Private Sub Form_Load()
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dati As String
Winsock1.GetData dati

Select Case dati
Case "messaggio"
MsgBox "Ciao utente!!!"
End Select
End Sub

Private Sub Winsock1_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)
Winsock1.Close
Winsock1.Listen
End Sub
Ultima modifica effettuata da Shutdown 11/07/08 16:48
aaa
11/07/08 11:11
antometal
se il client e il server giano sullo stesso pc come ip devi mettere 127.0.0.1 oppure localhost che identifica se stesso, altrimenti devi usare 2 pc con indirizzi di rete diversi
aaa
11/07/08 12:01
gantonio
Prima di tutto, NON impostare la porta del client, ma lasciala a zero. In questo modo la scegliera' il sistema e non avrai conflitto con la porta del server.

Le porte NON devono essere eguali per comunicare, in generale, e in particolare sullo stesso sistema.

Noto che ci sono moltissimi messaggi su winsock e programmazione in rete ma noto anche che NESSUNO ha mai studiato un po' di "teoria" sulla rete (protocolli, socket, TCP ...) ma TUTTI vogliono subito scrivere client e server funzionanti ...
aaa
11/07/08 12:53
giusy_m86
ti posto la mia applicazione

Client
Private Sub Form_Load()
'INIZIALIZZA IL SOCKET E RICHIEDE LA CONNESSIONE
Winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "192.168.1.55"
Winsock1.RemotePort = 141
End Sub

Private Sub cmdConnetti_Click()
'RICHIEDE LA CONNESSIONE
Winsock1.Connect
cmdInvia.Enabled = True
End Sub

Private Sub Winsock1_Connected()
'CONNESSIONE COMPLETATA ORA E' POSSIBILE SCAMBIARE I DATI
cmdInvia.Enabled = True
End Sub

Private Sub cmdInvia_Click()
 'INVIA I DATI (ORA ATTUALE) SULLA SOCKET E CHIUDE LA CONNESSIONE
If Winsock1.State = sckConnected Then
Winsock1.SendData Format(Now)
End If
End Sub

Private Sub cmdChiudi_Click()
'CHIUDE LA CONNESSIONE
Winsock1.Close
End Sub



SERVER
Private Sub Form_Load()
'INIZIALIZZA LA SOCKET E SI METTE IN ASCOLTO
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = 141
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'VERIFICA SE POSSIBILE ACCETTARE LA CONNESSIONE
If Winsock1.State <> sckClosed Then Winsock1.Close
'ACCETTA LA NUOVA CONNESSIONE
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'LEGGE I DATI IN ARRIVO E LI VISUALIZZA
Dim Msg As String
Winsock1.GetData Msg
Me.Print Msg & "from " & Winsock1.RemoteHostIP
End Sub

Private Sub Winsock1_Close()
'CHIUDE LA CONNESSIONE E SI RIMETTE IN ASCOLTO
Winsock1.Close
Winsock1.Listen
End Sub



SPERO CHE TI SIA DI AIUTO CIAO

-------------
Occhio al CAPS LOCK!!!
Ultima modifica effettuata da Shutdown 11/07/08 16:52
aaa
11/07/08 13:13
luca94
Ho risolto tutto!! Grazie!!
aaa
11/07/08 16:53
Shutdown
Come hai risolto?
aaa
12/07/08 6:50
luca94
Inserivo le porte (LocalPort e RemotePort) anche al client.
aaa
12/07/08 21:07
gantonio
Postato originariamente da luca94:

Inserivo le porte (LocalPort e RemotePort) anche al client.


Te lo avevo detto ... :)
aaa