elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ejemplo, Mensajero con Winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejemplo, Mensajero con Winsock  (Leído 1,232 veces)
Ferсhu


Desconectado Desconectado

Mensajes: 1.215

Menos palabras y Mas codigos.


Ver Perfil WWW
Ejemplo, Mensajero con Winsock
« en: 9 Septiembre 2007, 10:28 am »

Holass, les dejo un ejemplo de un programa q hice en estos dias, No uso mucho visual basic pero estaba muy aburrido y empeze a hacer un chat entre un servidor y un cliente para probar y como me gusto como kedo me puse a hacer uno al estilo mensajero, y ahora dicidi ponerlo aca por si a alguien le interesa como ejemplo.

Empeze solo con cosas de winsock y de apokito le agrege mas cositas, Basicamente es un mensajero q se comunica con otro mensajero en otra pc en una lan,  no hay cliente ni servidor, sino q el mismo programa tiene la opcion de "llamar" o "esperar q lo llamen", para eso uso 2 sock diferente asi kedaba mas prolijo. Tiene echo un miniprotocolo para comunicarce:

@#IDPC:datos#Crtl:datos#Nick:datos#Msge:datos#Esti:datos#

Solo lo menciono nada mas por q en el ejemplo solo uso el nick y el mensaje. Despues si lo termino con las fotos y lo demas lo subo, pero por ahora keda asi, sin terminar.

Ademas Guardo la configuracion Actual en un archivo para la proxima vez q se ejecuta. Tambien sirve de ejemplo.

Podria estar 2 horas escribiendo pero ni da, jaja aca esta el codigo.

- Formulario: "Mensajero"
- 5 Botones: Conectar, Desconectar, Esperar conexion, Configuracion, Enviar
- 2 Text Box: Mensaje, Conversacion.
- 2 Winsock: WinSockA, WinsockP
- 1 ComonDialog (no es necesario, es solo para la foto)

Código
  1. '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2. '>                                                  <
  3. '>           Ejemplo Creado Por Ferchu              <
  4. '>           f.e.r.c.h.u.s [x] hotmail.com          <
  5. '>               Para elhacker.net                  <
  6. '>                 <~>Ferchu<~>                     <
  7. '>                                                  <
  8. '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  9.  
  10. Private Sub Command1_Click()
  11. Load Configuracion
  12. Configuracion.Show
  13. End Sub
  14.  
  15. Private Sub Conectar_Click()
  16. WinsockP.Close
  17. WinsockA.Close
  18. Escuchar.Enabled = False
  19. WinsockA.Connect IPDestino, PuertoRemoto
  20.  
  21. End Sub
  22.  
  23. Private Sub Desconectar_Click()
  24. WinsockP.Close
  25. WinsockA.Close
  26. Conectar.Enabled = True
  27. Escuchar.Enabled = True
  28.  
  29. End Sub
  30.  
  31. Private Sub Enviar_Click()
  32. Dim texto As String, Data As String
  33.  
  34.  
  35. If ((WinsockP.State = 7) Or (WinsockA.State = 7)) Then
  36.    texto = Mensaje
  37.    texto = Replace(texto, "#", "&num")
  38.    Data = "@#IDPC:123" + "#Crtl:123" + "#Nick:" + MiNick + "#Msge:" + texto + "#"
  39.    If (WinsockP.State = 7) Then
  40.    WinsockP.SendData Data
  41.    Else
  42.    WinsockA.SendData Data
  43.    End If
  44.    Conversacion = Conversacion + MiNick + " Dice :" + vbCrLf + Mensaje + vbCrLf
  45.    Mensaje = ""
  46. Else
  47. MsgBox "Estas desconectado", vbExclamation + vbOKOnly, "Atencion"
  48.  
  49. End If
  50. End Sub
  51.  
  52. Private Sub Escuchar_Click()
  53. WinsockP.Close
  54. WinsockA.Close
  55. Conectar.Enabled = False
  56. WinsockP.Bind PuertoLocal
  57. WinsockP.Listen
  58.  
  59. End Sub
  60.  
  61. Private Sub Form_Load()
  62. path = App.path
  63. With Configuracion
  64. IPDestino = .IP
  65. PuertoRemoto = .PuertoR
  66. PuertoLocal = .PuertoL
  67. MiNick = .Nick
  68. End With
  69. flagfoto = False
  70. End Sub
  71.  
  72. Private Sub Mensaje_KeyPress(KeyAscii As Integer)
  73. If (KeyAscii = 13) Then Enviar_Click
  74. End Sub
  75.  
  76. Private Sub WinsockA_Connect()
  77. Conversacion = Conversacion + "Iniciando sesion..." + vbCrLf
  78. End Sub
  79.  
  80. Private Sub WinsockA_Close()
  81. Dim Desconexion As String
  82.  
  83. If (nickuser = "") Then
  84. Desconexion = "Se perdio la conexion..." + vbCrLf
  85. Else
  86. Desconexion = "El usuario " + nickuser + " se desconecto..." + vbCrLf
  87. End If
  88. Conversacion = Conversacion + Desconexion
  89.  
  90. End Sub
  91.  
  92. Private Sub WinsockP_Close()
  93. Dim Desconexion As String
  94.  
  95. If (nickuser = "") Then
  96. Desconexion = "Se perdio la conexion..."
  97. Else
  98. Desconexion = "El usuario '" + nickuser + "' se desconecto..." + vbCrLf
  99. End If
  100. Conversacion = Conversacion + Desconexion
  101. Desconectar_Click
  102. End Sub
  103.  
  104. Private Sub WinsockP_ConnectionRequest(ByVal requestID As Long)
  105. If WinsockP.State <> sckClosed Then WinsockP.Close
  106. WinsockP.Accept requestID
  107. Conversacion = Conversacion + "Iniciando sesion..." + vbCrLf
  108.  
  109. End Sub
  110.  
  111. Private Sub WinsockP_DataArrival(ByVal bytesTotal As Long)
  112. Dim Data As String
  113. WinsockP.GetData Data
  114. procesar Data
  115.  
  116. End Sub
  117.  
  118. Private Sub WinsockA_DataArrival(ByVal bytesTotal As Long)
  119. Dim Data As String
  120. WinsockA.GetData Data
  121. procesar Data
  122. End Sub
  123.  
  124. Private Sub Form_Unload(Cancel As Integer)
  125. Unload Configuracion
  126. End Sub
  127.  
  128.  

-Formulario: "Configuracion"
- 2 Botones: Aceptar, Foto
- 4 Text Box: Nick,IP , PuertoR, PuertoL
- 4 Label

Código
  1.  
  2. Private Sub Form_Initialize()
  3. Dim exist As String
  4.  
  5.  
  6. On Error GoTo fin
  7.  
  8. exist = Dir$(path + "\" + "Config.Fer")
  9.  
  10. If (exist <> "") Then
  11.  
  12. Open path + "\" + "Config.Fer" For Random As #1 Len = Len(Config)
  13.  
  14. Get #1, 1, Config
  15. Close #1
  16.  
  17. MiNick = Trim(Config.MiNick)
  18. IPDestino = Config.IPDestino
  19. PuertoRemoto = Config.PuertoRemoto
  20. PuertoLocal = Config.PuertoLocal
  21. Mensajero.Dialog.FileName = Config.Foto
  22. If (Trim(Config.Foto) <> "") Then Mensajero.Foto.Picture = LoadPicture(Mensajero.Dialog.FileName)
  23.  
  24. Nick = Trim(Config.MiNick)
  25. IP = Config.IPDestino
  26. PuertoR = Config.PuertoRemoto
  27. PuertoL = Config.PuertoLocal
  28. Else
  29. Nick = "Mensajerito"
  30. IP = "127.0.0.1"
  31. PuertoR = 8000
  32. PuertoL = 8000
  33.  
  34. End If
  35. fin:
  36. End Sub
  37.  
  38.  
  39. Private Sub Foto_Click()
  40.  
  41. Mensajero.Dialog.InitDir = path
  42. Mensajero.Dialog.ShowOpen
  43.  
  44. If (Mensajero.Dialog.FileName <> "") Then Mensajero.Foto.Picture = LoadPicture(Mensajero.Dialog.FileName)
  45.  
  46. End Sub
  47.  
  48. Private Sub OK_Click()
  49. Dim Config As ConfigFer
  50.  
  51. MiNick = Nick
  52. IPDestino = IPDestino
  53. PuertoRemoto = PuertoR
  54. PuertoLocal = PuertoL
  55.  
  56. Config.Foto = Mensajero.Dialog.FileName
  57. Config.MiNick = MiNick
  58. Config.IPDestino = IPDestino
  59. Config.PuertoRemoto = PuertoRemoto
  60. Config.PuertoLocal = PuertoLocal
  61.  
  62.  
  63. Open path + "\" + "Config.Fer" For Random As #1 Len = Len(Config)
  64.  
  65. Put #1, 1, Config
  66. Close #1
  67.  
  68. Unload Me
  69.  
  70. End Sub
  71.  
  72.  

- 1 Modulo: Modulofer :p jaja

Código
  1. Public path As String
  2. Public PuertoLocal As Long
  3. Public PuertoRemoto As Long
  4. Public MiNick As String
  5. Public IPDestino As String
  6. Public nickuser As String
  7. Public PCID As String            'No utilizado en el ejemplo
  8. Public Control As String         'No utilizado en el ejemplo
  9. Public flagfoto As Boolean
  10. Public Config As ConfigFer
  11. Public Type ConfigFer
  12.        PuertoLocal As Long
  13.        PuertoRemoto As Long
  14.        MiNick As String * 20
  15.        IPDestino As String * 20
  16.        Foto As String * 100
  17.  
  18. End Type
  19.  
  20. Sub mensajes(texto As String)
  21. Dim tipo As String
  22. tipo = Left(texto, 5)
  23. Select Case (tipo)
  24.    Case "IDPC:"
  25.    'No utilizado en este ejemplo
  26.    Case "Crtl:"
  27.    'No utilizado en este ejemplo
  28.    Case "Foto:"
  29.    'No utilizado en este ejemplo
  30.  
  31.    Case "Nick:"
  32.    nickuser = Right(texto, Len(texto) - 5)
  33.    Case "Msge:"
  34.    texto = Right(texto, Len(texto) - 5)
  35.    texto = Replace(texto, "&num", "#")
  36.    Mensajero.Conversacion = Mensajero.Conversacion + nickuser + " Dice: " + vbCrLf + texto + vbCrLf
  37.    End Select
  38. End Sub
  39.  
  40. Sub procesar(Data As String)
  41. Dim pos As Long, valido As String, msg As String
  42.  
  43. valido = Left(Data, 1)
  44. Data = Right(Data, Len(Data) - 2)
  45. If (valido = "@") Then
  46. pos = InStr(1, Data, "#", vbTextCompare)
  47.  
  48. While (pos <> 0)
  49.    msg = Left(Data, pos - 1)
  50.    mensajes (msg)
  51.    Data = Right(Data, Len(Data) - pos)
  52.    pos = InStr(1, Data, "#", vbTextCompare)
  53. Wend
  54.  
  55. End If
  56. End Sub
  57.  


Bueno eso es todo, Espero q a alguien le sirva. Acepto criticas y sugerencias jejeje.

Para los mas vaguitos, aca les dejo el archivo.

Mensajero.rar
http://www.xzshare.it/777504


Saludos!!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines