Oppure

Loading
10/02/07 18:49
c.ronaldo
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 :k:
aaa
11/02/07 10:57
P4p3r0g4
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
aaa
11/02/07 11:01
Hacker
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;)
aaa
11/02/07 11:22
Hacker
@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...
aaa
11/02/07 11:51
c.ronaldo
Grazie mille hacker....
Solo che io volevo che nn si dovesse digitare ip per connettersi ma basta solo aprire...cmq GRAZIE :k:

@ paperoga
Nn ho capito come devo fare x la seconda strada (quella che tu mi hai consigliato)
GRAZIE A TUTTI :k:
aaa
11/02/07 11:56
Hacker
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;)
aaa
11/02/07 12:04
c.ronaldo
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 :k:
aaa
11/02/07 12:13
Hacker
è una cosa impossibile...si deve mettere per forza l'indirizzo IP o l'indirizzo del sito.
Ultima modifica effettuata da Hacker 11/02/07 12:13
aaa