descubri que tengo una calidad expresiva de mierd**
pero we! voy a empezar a hacer la segunda parte del tuto creando el servidor
primero creamos un exe standar en visual basic 6
y le agregamos al formulario los siguientes objetos
*3 textbox
*3 botones
*un winsock
*y un frame para que quede mas lindo

la imagen es el modelo a seguir

como en el anterior, editamos las propiedades del text box1:
multiline = true
scrollbars = vertical
PROGRAMANDO EL SERVIDORbueno como hise arriba, voy a dar el code y lo voy a explicar (ahhh sin spoilers queda medio largo el tuto

...)
Code (vb):
Private Sub Command2_Click()
Winsock1.Close
Winsock1.LocalPort = Text3.Text
Winsock1.Listen
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Esuchando conexiones." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Peticion numero " & requestID & vbCrLf
Text1.SelStart = Len(Text1.Text)
Winsock1.Close
Winsock1.Accept requestID
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion aceptada, listo para interactuar." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Command3_Click()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el Cliente." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Command1_Click()
Winsock1.SendData Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Servidor >" & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text2.Text = ""
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer As String
Winsock1.GetData Buffer
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Cliente >" & Buffer
Text1.SelStart = Len(Text1.Text)
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
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub
este code se mantiene a la escucha del puerto y acepta las peticiones de coneccion ( es de mono coneccion, si encuentro la fuente meto tambien el server de multiconecciones, pero con esto basta..)
para mantener la escucha en el pueto que especificamos en el text box 3 utilizamos el siguiente code
Code (vb):
Private Sub Command2_Click()
Winsock1.Close
Winsock1.LocalPort = Text3.Text
Winsock1.Listen
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Esuchando conexiones." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
la primera linea cierra la coneccion actual, para modificar los datos y realizar una coneccion nueva sin que nos de errores
la segunda linea aclara que el local port es el que se escribe en el text box 3
la tercera linea mantiene a la escucha del puerto
el resto del code muestra un mensaje en el text box 1 (*** escuchando conecciones)
------------------------------------------------------------------------------------------------------
el socket se queda a la escucha de peticiones pero
todavia no se puede establecer una conexion por que todavia no implementamos esa parte del codigo
para ello utilizamos el evento "ConnectionRequest()" .. el code es el siguiente
Code (vb):
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Peticion numero " & requestID & vbCrLf
Text1.SelStart = Len(Text1.Text)
Winsock1.Close
Winsock1.Accept requestID
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion aceptada, listo para interactuar." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
las primeras tres lineas del code, es decir las del text1 , muestra un mensaje en el text box 1
la cuarta linea del codigo (winsock1.close) dice que cierre la coneccion con close... parece ilogico pero lo que hace es cerrar la esxuxha del puerto para despues aceptar la coneccion (accept resquetID)
el resto del code muestra un mensaje en el textbox1 (***coneccion aceptada....bla bla bla)
-------------------------------------------------------------------------------
para cerrar la coneccion con el boton desconectar utilizamos el siguiente code
Code (vb):
Private Sub Command3_Click()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
solo vasta poner el metodo "close"
el resto del code muestra un texto en el text box 1 ( coneccion cerrada... BLA BLA BLA)
Code (vb):
Private Sub Winsock1_Close()
Winsock1.Close
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "*** Conexion cerrada por el Cliente." & vbCrLf
Text1.SelStart = Len(Text1.Text)
End Sub
lo mismo que el code anterior
-----------------------ENVIANDO Y RECIBIENDO DATOS-------------------------
es identico al cliente, no necesita explicacion
Code (vb):
Private Sub Command1_Click()
Winsock1.SendData Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Servidor >" & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
Text2.Text = ""
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Buffer As String
Winsock1.GetData Buffer
Text1.SelStart = Len(Text1.Text)
Text1.Text = Text1.Text & "Cliente >" & Buffer
Text1.SelStart = Len(Text1.Text)
End Sub
------------MANEJO DE ERRORES--------------------------------------
el mismo code que utilizamos en el cliente
Code (vb):
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
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub
listo el pollo! ya podemos usarlo, generamos el proyecto.exe
lo que nos quedo es una especie de chat =P elegiomos un puerto y le damos escuchar (woow! me quedo un versito!)

en el programa cliente ponemos en el servidor localhost y en el puerto, el puerto que ustedes habian elegido

cuando conectas en el cliente esto susede en el servidor

bueno escribis cualquier cosa y le das enviar ( en el textbox 2, obvio..)


vieron que les decia lo de multiconecciones?¿ abran un cliente nuevo y pongan en servidor "localhost" y en puerto el mismo que pusieron mas arriba..
que paso?¿ nos tiro un error! por que? por que el programa servidor ya no esta escuchando las peticiones de coneccion del puerto que elijieron
bue espero que les haya gustado el tuto... see later...
ahhhh! me acorde! les dejo el sourse code y el el servidor.exe
servidor.rar
http://www.mediafire.com/?emogdk0a5kmchauuuchauu!
estoy castigado.... que hacemo?¿