c.ronaldo (Normal User)
Expert
Messaggi: 577
Iscritto: 01/02/2007
|
Salve a tutti!
Volevo sapere come fare un programma client/server
Che :
Normalmente si apre il server e lo si mette in ascolto...Solo che poi il client x potersi collegare deve scrivere IP e magri anche la porta...
Come posso fare dche se il server è in ascolto
appena apro il client avviene una connessione tra i 2 ?
PS : Ho trovato alcuni sorgenti ma nn ci ho capito un gran chè....
GRAZIE A TUTTI
|
|
P4p3r0g4 (Member)
Guru
Messaggi: 1319
Iscritto: 29/12/2006
|
per connettersi al client digitando l'ip penso che sia una demenzialità usi le winsocks una del server la metti in ".listen" e con l'altra ti connetti con ".connect".
per variare l'ip non c'è alcun problema basta che la connesione dai il ".remotehost" uguale a un text1.text
per fare variare la porta è molto più difficile ma non impossibile.
devi
1) o aprire turre le porte possibili con 1 winsock per porta che ascolti(fortemente sconsigliato.)
2)o fare controllare regolarmente al server un sito internet nel quale il programma client uploderà il numero della porta e aprire la porta equivalente.(consiglio questo)
3)spedire una mail col client e farla scaricare dal server contenente la porta.(difficile ma il migliore)
La stada che ti consiglio è la seconda. non è impossibile da fare e è molto più pratico del primo
|
|
Hacker (Member)
Guru
Messaggi: 1014
Iscritto: 06/06/2006
|
ti ho fatto 2 semplici sorgenti sul client/server:
SERVER:
Dim RecivedData
Private Sub Form_Load()
With Winsock
.Close
.Protocol = sckTCPProtocol
.LocalPort = 90
.Listen
End With
End Sub
Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
With Winsock
.Close
.Accept requestID
End With
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Winsock.GetData RecivedData, vbString
txtDatiRicevuti.Text = RecivedData
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)
MsgBox Err.Description & Space(1) & Err.Number & Space(1) & Err.Source
End Sub
CLIENT:
Private Sub cmdConnect_Click()
With Winsock
.Close
.Protocol = sckTCPProtocol
.RemoteHost = txtIP.Text
.RemotePort = txtPort.Text
.Connect
End With
End Sub
Private Sub Form_Load()
cmdConnect_Click
End Sub
Private Sub tmr_Timer()
If Winsock.State = 7 Then
MsgBox "Connesso"
Winsock.SendData "Ok,ora mi disconnetto!"
tmr.Enabled = False
End If
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)
MsgBox Err.Description & Space(1) & Err.Number & Space(1) & Err.Source
End Sub
Private Sub Winsock_SendComplete()
MsgBox "Inviati i dati!"
End Sub
Dimmi cosa non hai capito che tento di illustrarti il funzionamento
|
|
Hacker (Member)
Guru
Messaggi: 1014
Iscritto: 06/06/2006
|
@Paperoga:
per cambiare porta basta inviare al server la stringa della nuova porta e riaprire la connessione del client con la nuova porta...
es.
Client:
Winsock.SendData "NewPort:" & txtNewPort.text
Server:
If InStr(1, DatiRicevuti, "NewPort:", vbTextCompare) <> 0 Then
winsock.close
winsock.localport=Mid(DatiRicevuti, 9)
winsock.listen
end if
Poi il client riapre la connessione successivamente con la nuova porta:
Client:
winsock.close
winsock.remoteport=txtNewPort.text
winsock.remotehost=txtIP.text
winsock.connect
Tutto qua...
|
|
c.ronaldo (Normal User)
Expert
Messaggi: 577
Iscritto: 01/02/2007
|
Grazie mille hacker....
Solo che io volevo che nn si dovesse digitare ip per connettersi ma basta solo aprire...cmq GRAZIE
@ paperoga
Nn ho capito come devo fare x la seconda strada (quella che tu mi hai consigliato)
GRAZIE A TUTTI
|
|
Hacker (Member)
Guru
Messaggi: 1014
Iscritto: 06/06/2006
|
se intendi il cambio della porta c'è un metodo migliore(quello che ti ho scritto al post precedente)senza siti internet...
se non conosci qualche funzione,o non capisci qualche cosa puoi chiedere
|
|
c.ronaldo (Normal User)
Expert
Messaggi: 577
Iscritto: 01/02/2007
|
Veramente io voglio chequando il server è in ascolto,per connettere il client nn si inserisca l'ip ma avvenga direttamente (Ho visto molti sorgenti del genere ma nn cio capito un gran chè)
Grazie
|
|
Hacker (Member)
Guru
Messaggi: 1014
Iscritto: 06/06/2006
|
è una cosa impossibile...si deve mettere per forza l'indirizzo IP o l'indirizzo del sito.
Ultima modifica effettuata da Hacker il 11/02/2007 alle 13:13 |
|
c.ronaldo (Normal User)
Expert
Messaggi: 577
Iscritto: 01/02/2007
|
Mo vedo di trovare il sorgente e te lo dò...
cmq GRAZIE
|
|