He pedido en varios foros y hasta en este:
http://foro.elhacker.net/programacion_visual_basic/como_creo_la_conexion_con_csocket_master-t306667.0.html (http://foro.elhacker.net/programacion_visual_basic/como_creo_la_conexion_con_csocket_master-t306667.0.html)
Y nadie puede solucionarme una simple conexion con CSocketMaster jeje xD, no he provado preguntar en otro foro ahi q luego hare pero espero q alguien se anime y pruebe lo q quiero hacer ya q si no salgo de lo basico no lograre hacer nada y me asombra q grandes programadores me digan Esta todo bien el codigo no se porq no anda :S , no me serviria eso como respuesta ahora jeje porq si quieren pueden cambiar todo, incluso no usar socketmaster pero solucionar el problema de q aunque no tengan la libreria en otra pc funcione igual ( incluida en recursos) pero no se, espero q alguien me ayuda ya q da para pensar, yo si fuera un programador como muchos de ustedes y no puedo resolver esto.. es porq tan bueno no soy :S
El q no quiera intentarlo no comente algo como Estudia y arreglalo vs mismo, porq estudie no se preocupen solo q necesito de alguien con mas experiencia aun para ver q problema tengo :S
lo primero que te recomendaria es verificar si se puede conectar a esa pc porque puede que estes detras de un router, o el firewal o antivirus bloque los puertos
de seguro que es el router
create un server ponelo a la escucha e intenta conectar desde otro lado
lo podes hacer con el sitio de BlackZeroX
http://infrangelux.sytes.net/ScanX/
PD: Muy bueno BlackZeroX esa pagina yo hace rato quize hacer eso pero ningun servidor me permitio utilzar los sokets en puertos que no sea el 80, en que esta en linux o windows?, estaria bueno que agas un tipo api, para testear este tipo de problemas como el de ZERO, osea la pagina deberia retornar un OK o ERROR, algo bien pelado osea sin ningun html
Esque no tengo router, solo modem, y no tengo av, tengo el firewall activo pero al poner en escucha me aparece para desbloquear y lo desbloqueo ( con eso abro ese puerto) y listo, por lo q me han dicho otros programadores q miran en el debug dice q se conecta pero enseguida se cierra, talvez algunos de los eventos esos como server_error() puse algun server_sckclose o algo asi era, y no tenia q ir ahi no se :S
no he mirado el codigo pero solo decirte que aun sin firewall en tu equipo o en remoto si el puerto no esta abierto en el router la conexion no se puede hacer.
Cita de: LeandroA en 23 Octubre 2010, 20:10 PM
lo primero que te recomendaria es verificar si se puede conectar a esa pc porque puede que estes detras de un router, o el firewal o antivirus bloque los puertos
de seguro que es el router
create un server ponelo a la escucha e intenta conectar desde otro lado
lo podes hacer con el sitio de BlackZeroX
http://infrangelux.sytes.net/ScanX/
PD: Muy bueno BlackZeroX esa pagina yo hace rato quize hacer eso pero ningun servidor me permitio utilzar los sokets en puertos que no sea el 80, en que esta en linux o windows?, estaria bueno que agas un tipo api, para testear este tipo de problemas como el de ZERO, osea la pagina deberia retornar un OK o ERROR, algo bien pelado osea sin ningun html
mira esto...:
http://infrangelux.sytes.net/ScanX/?ip=www.google.com.mx&NoHtml=0&port=800&msg=texto a enviar
http://infrangelux.sytes.net/ScanX/?ip=www.google.com.mx&NoHtml=1&port=800&msg=texto a enviar
http://infrangelux.sytes.net/ScanX/?ip=www.google.com.mx&NoHtml=2&port=800&msg=texto a enviar
http://infrangelux.sytes.net/ScanX/?ip=www.google.com.mx&NoHtml=3&port=800&msg=texto a enviar
Los parametros estan aquí:
http://infrangelux.sytes.net/ScanX/
Dulce Infierno Lunar!¡.
.
Aclaro denuevo q problema de puertos no es porq NO TENGO ROUTER NI NADA TODO BIEN ESO y aclaro q en mi misma pc me anda si pongo a conectar a server.localip , puerto pero eso es obvio q andara solo de local y me lo han probado en red y como es logico tambien anda en red, pero fuera de la red no, y si yo actualizo mi no-ip y poner conectar a mi no-ip, puerto no me anda ni de local y obviamente menos con otra pc :S
Buenisimo BlackZeroX, hay otra cosa mas para sugerirte, que la ip no sea obligatoria ya que pude que no cosoca mi ip publica. o bien puedes hacer otro php para recuperar la ip publica, pero ya son dos peticiones creo que es mejor lo primero y hasta podria devolverla dentro del resultado.
pero antes hay que arreglar algo fijate
Option Explicit
Private Sub Form_Load()
Winsock1.Close
Winsock1.LocalPort = 300
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Winsock1.GetData sData
Debug.Print sData
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)
Debug.Print Description
End Sub
no imprime ningun texto, creo que el scanX cierra demasiado rapido la conexion y no se alcanza a enviar el msg.
@Zero
esto deveia indicarte el estado
Option Explicit
'=========Wininet Api========
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1
Private Const INTERNET_OPEN_TYPE_PROXY As Long = 3
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Private WithEvents CSocket As CSocketMaster
Private Sub CSocket_ConnectionRequest(ByVal requestID As Long)
CSocket.CloseSck
CSocket.Accept requestID
End Sub
Private Sub CSocket_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
CSocket.GetData sData
Debug.Print sData
End Sub
Private Sub Form_Load()
Set CSocket = New CSocketMaster
CSocket.LocalPort = 200
CSocket.Listen
Debug.Print GetConnection("http://infrangelux.sytes.net/ScanX/?ip=190.225.124.46&NoHtml=2&port=200&msg=Prueba")
End Sub
Function GetConnection(ByVal sUrl As String) As String
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
sBuffer = Space(1000)
hOpen = InternetOpen("VB6", INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, sUrl, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
Do
InternetReadFile hFile, sBuffer, 1000, Ret
GetConnection = GetConnection & Left(sBuffer, Ret)
If Ret = 0 Then Exit Do
Loop
InternetCloseHandle hFile
InternetCloseHandle hOpen
End Function
Private Sub CSocket_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)
Debug.Print Description
End Sub
PD algunos modem tambien bloquean los puertos acesorate de eso para habilitarlos.
por las dudas utiliza tu ip publica http://www.cualesmiip.com/
Yo entiendo lo de los puertos de esos no se preocupen mas xD
Lo probare para ver si me dice algo de porq el error aunque ya me habia dicho y no entendia el error pero veo con ese code, y nadie lo ha mirado? talvez ven el error o se animan a probarlo con otra pc para si el problema soy yo o no :S
.
Actualise los parametros de ScanX (http://infrangelux.sytes.net/ScanX/), se ve mejor en la pagina:
arametro Obligatorio Descripción
IP NO DNS/IP Destinatario (Dejar en blanco para escanearse a si mismo)
Port SI Indica el Puerto Destinatario
NoHtml NO Indica si se desea usar Html ( Default = 0 )
# Parametros: 0 = Desactiva la opcion
# 1 = Resultados Sin HTML
# 2 = Resultados Sin HTML y con muestra solo el Codigo de error
# 3 = Resultados Sin HTML y con muestra el Codigo de error y su descripcion (El Codigo de Error esta separado de su descripcion por "--->".)
# Returns: -1 = Error de Rango de Puertos
# 0 = Error de Conexion
# 1 = Conexion Satisfecha
MyIPAddres NO Si se activa este parametro solo Mostra la IP en texto Plano
# Parametros: 0 = Desactiva la opcion
# 1 = Activar la Opcion
Asique para obtener tu dirreicón IP sería ai:
http://infrangelux.sytes.net/ScanX/?myipaddres=1
Option Explicit
'=========Wininet Api========
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1
Private Const INTERNET_OPEN_TYPE_PROXY As Long = 3
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Private Sub CSocket_Close()
Call CSocket.Close
Call CSocket.Listen
End Sub
Private Sub CSocket_ConnectionRequest(ByVal requestID As Long)
Call CSocket.Close
Call CSocket.Accept(requestID)
End Sub
Private Sub CSocket_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Call CSocket.GetData(sData)
Debug.Print sData
End Sub
Private Sub Form_Load()
CSocket.LocalPort = 200
CSocket.Listen
Debug.Print GetConnection("http://infrangelux.sytes.net/ScanX/?nohtml=2&port=200&msg=Prueba")
End Sub
Function GetConnection(ByVal sUrl As String) As String
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
sBuffer = Space(1000)
hOpen = InternetOpen("VB6", INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, sUrl, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
Do
InternetReadFile hFile, sBuffer, 1000, Ret
GetConnection = GetConnection & Left(sBuffer, Ret)
If Ret = 0 Then Exit Do
Loop
InternetCloseHandle hFile
InternetCloseHandle hOpen
End Function
Private Sub CSocket_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)
Debug.Print Description
End Sub
Dulce Infienro Lunar!¡.
Yo no tengo mucha experiencia ni entiendo la programacion tanto como ustedes pero yo por ejemplo cuando quiero hacer un servidor de world of warcraft y dejar que entre la gente al usar un no-ip tengo que configurar el archivo host de windows para que el dominio no-ip sea redireccionado a localhost es decir a mi maquina. No se si podra ayudarte eso en algo, igual me pasa con las paginas web cuando quiero mostrarlas o algo y son proyectos o cuaquier cosa tengo que darle una redireccion a mi direccion de no-ip hacia mi pc para que la gente tenga acceso a los datos que quiero mostrar.
Exelente BlackZeroX, le voy a dar uso, y voy a poner tu pagina en los enlaces de mi blog
Saludos.
Jajaja el post se desvio mucho y siguen sin poder ayudarme xD, Clouth he creado server de WoW tamb, de Mu, y otros mas de esos, eso q dices ya lo se, y no tengo esos problemas xD ademas no es necesario para lo q quiero hacer, ademas poniendo mi ip publica tampoco funciona..
Nadie se anima a cambiarme todo el code igual? :/
bueno aver agamos las cosas sensillas
Cliente dos textbox y un command1
Option Explicit
Dim WithEvents Client As CSocketMaster
Private Sub Client_CloseSck()
Me.Caption = "Desconectado"
End Sub
Private Sub Client_Connect()
Me.Caption = "Conectado"
End Sub
Private Sub Client_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
End Sub
Private Sub Command1_Click()
Client.SendData Text2
End Sub
Private Sub Form_Load()
Dim IP As String
IP = "10.0.0.3" 'aqui deve ir la ip publica
Set Client = New CSocketMaster
Client.Connect IP, "100"
End Sub
Private Sub Client_ConnectionRequest(ByVal requestID As Long)
Client.CloseSck
Client.Accept requestID
End Sub
Private Sub Client_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Client.GetData data
Text1.Text = Text1.Text + data + vbCrLf
End Sub
Servidor dos textbox y un command1
Option Explicit
Dim WithEvents Server As CSocketMaster
Private Sub Command1_Click()
Server.SendData Text2
End Sub
Private Sub Form_Load()
Set Server = New CSocketMaster
Server.LocalPort = 100
Server.Listen
End Sub
Private Sub Server_CloseSck()
Me.Caption = "Desconectado"
End Sub
Private Sub Server_ConnectionRequest(ByVal requestID As Long)
Server.CloseSck
Server.Accept requestID
Me.Caption = "Conectado"
End Sub
Private Sub Server_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Server.GetData data
Text1.Text = Text1.Text + data + vbCrLf
End Sub
Private Sub Server_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
End Sub
Eso es un código bien basico, solo tenes que cambiar la IP y probarlo te tiene que funcionar, una ves que verificaste que esto funciona le agreas las demas boludeces.
Vs viste mi codigo? no tiene ningun error esta casi igual a ese y el problema soy yo si porq ese no me anda tampoco :S
Me han echo ping y no consiguen respuesta aveces, nadie se puede fijar si funciona o no? xD aunquesea quiero saber q hice las cosas bien
Ningun programador puede jaja xD <----- Ironico no? xD
Cita de: cobein en 25 Octubre 2010, 02:20 AM
Ningun programador puede jaja xD <----- Ironico no? xD
Es para q se pongan las pilas y me ayuden xD, aunque de verdad no han podido pero ya me ayudaron y dentro de unos post mas me dare cuenta 100% q el problema es mi pc xD
Vale que no he leido mucho el tema, pero dejo mi opinion.
1 Has probado primero con ip local? (127.0.0.1)
2 Has probado si el socket esta en TCP y no en UDP? (es una tonteria pero te podria dar este problema no?)
Ahi las dejo...
Salu2
Ranslsad
En local funciona si y hasta en red asique no se, pero si anda en red ya descarto tu segunda posibilidad no?
Si no hubiera andado en red lan tiene algo de logica lo q dices ya q se conecta pero se desconecta, como q solo envia informacion je y no se donde fijarme eso q dices pero ahora empiezo a sospechar si esta bien mi socket :S
Talvez alguien me deja para bajarme uno ya configurado para TCP
claro ningun programador puede resolverle la vida a alguien que no busca, el problema no esta en el codigo si no en tus puertos, yo tambien uso modem y pordefault vienen los puertos cerrados, buscate un manual de como abrirlos.
Pero porq mejor no leen los post anteriores antes de ayudarme? esq sino se convierte en spam esto xD ja
Cita de: XXX-ZERO-XXX en 28 Octubre 2010, 17:26 PM
En local funciona si y hasta en red asique no se, pero si anda en red ya descarto tu segunda posibilidad no?
Si no hubiera andado en red lan tiene algo de logica lo q dices ya q se conecta pero se desconecta, como q solo envia informacion je y no se donde fijarme eso q dices pero ahora empiezo a sospechar si esta bien mi socket :S
Talvez alguien me deja para bajarme uno ya configurado para TCP
Me leí todos las respuestas y veo cual es tu problema..,
Te anda en Local, te Anda en Red, ¿Que quieres?
No olvidaste AccepRequestID (Algo así..,) para aceptar la conexión? si no, entonces es la razón por la que se conecta y se cierra en el instante..
LeandroA ya te puso algunos códigos ya echos y funcionan bien ;)
SaluDOS!!!
En red lan me referia y lo q quiero es q ande tambien en WAN xD
Pero al andar en red lan ( un cyber por ejemplo) es porq no hay error en el evento para aceptar la conexion.. gracias a todos ya me estoy dando cuenta q es mi pc o talvez el socket pero si alguien tiene otra posibilidad de error q la comente ;)
Gracias a todos!
Si funca en LAN también en WAN, el problema no es al aceptar los Sockets, puede que sea que los sockets jamás llegen, pruebalo usando la "Hyperterminal de Windows" que está en "Programas/Accesorios/Comunicaciones/.." en el menú inicio..
abre una conexión como servidor y verifica por tu cuenta si alguien puede conectarse, si no sabrás que no son los módulos de winsock, no es tu PC y aceptar que hay un Router, Firewall o algo parecido en alguno de los 2 lados que no permite la conexión ;)
SaluDOS!!!
Ya pregunte bien y el q me testeaba el programa dijo que le anduvo bien a el de local solamente y luego le anduvo en red y q no ha probado con otro q no sea yo, y cuando probo conmigo no anduvo.. despues eso de q me hacen ping a mi ip y no doy respuesta.. Todo eso me dice q el problema soy yo PERO.. por ejemplo yo uso el TeamViewer para q se conecten a mi pc o yo a las de ellos y funciona perfecto, no tengo router y el firewall esta activado ahora mismo pero me aparece para desbloquear los puertos y ya se abren al darle Desbloquear. Pero tambien probe el proyecto con el firewall desactivado..
Tampoco tengo Antivirus ja ni otro firewall extra, pero esperare a ver que alguien me lo pruebe con otra pc ya q yo no puedo porq no tengo otras 2 pc ja y mis amigos no me aceptan ningun archivo xD
si tus propios amigos no aceptan tus archivos, dudo que nadie de aqui quiera aceptarlos. por otro lado parece que no sabes ni como se realiza una conexion cuando no sabes ni las diferencias de UDP y de TCP siendo sockets los 2 no se trabaja de la misma forma con ellos, por lo tanto una implementacion TCP no va a correr con socket UDP, el problema claramente eres tu que intentas hacer algo que no comprendes, lee y cuando tengas claros los conceptos y como funcionan las cosas podras pedir ayuda a un error concreto, pq aqui se esta adivinando si tu red esta mal configurada etc etc.
Me eliminaron el post o no se q paso :S hacia unos dias ya te habia contestado..
Mis amigos no me aceptan nada porq saben q me gusta el hacking, si.. fue un error q hice al contarles pero esq las primeras pruebas las hice con ellos ya q no puedo crear maquinas virtuales, no me da mi pc xD jaja
Despues lo de TCP entiendo mas o menos si, y se q necesito usar el protocolo TCP pero pensaba q en los mismos modulos se podia elegir y talvez venia por defecto UDP y tenia q cambiarlo como me diijeron, pero ahora veo q pense mal xD
Probe con otro modulo q me dio LeandroA y anduvo, probe con el mismo, es el Winsock32 pero ahora me di cuenta q no resuelve el host o no se q pasa.. porq si pongo mi no-ip no me conecta :/ y es lo q necesito ya q mi ip cambiara..
Cita de: XXX-ZERO-XXX en 29 Octubre 2010, 19:25 PM
no tengo router y el firewall esta activado ahora mismo pero me aparece para desbloquear los puertos y ya se abren al darle Desbloquear. Pero tambien probe el proyecto con el firewall desactivado..
Estas Totalmente equivocado en este punto. Cuando Windows te hace la peticion para desbloquear, no es para los puertos si no para la aplicacion en si. Mientras no abras los puertos que usa tu programa jamas recibira informacion por ese puerto.
Para desbloquear el puerto de tu aplicacion y que la misma pueda recibir informacion por ese puerto debes ir a la configuracion del firewall de windows -> Opciones Avanzadas -> En Configuracion de conexion de red seleccionas la conexion a internet y das click en configuracion -> En la pestaña servicios das click en Agregar -> En descripcion lo que tu quieras, en nombre o direccion ip puedes poner el nombre de tu pc o tu ip y por ultimo en puerto de conexion interno y externo colocas el puerto que usa tu aplicacion, Luego aceptar, aceptar y aceptar.
Ya con eso tu programa puede tanto enviar como recibir informacion desde la internet por ese puerto. Si esto no te funciona ya no es los puertos, o es tu programa o es algo en tu pc.
Saludos.
Bueno pero si te fijas dije q tambien lo probe con el firewall desactivado.. pero gracias por tu explicacion y corrigeme si me equivoco.. entonces me estas diciendo que cuando pongo lo de desbloquear solo habilita esa aplicacion y si le cambio de nombre a la aplicacion me saldria otra vez para desbloquearla, no tengo nada para probar ahora por eso pregunto.Y despues eso q dices para abrir el puerto, yo pense q se hacia donde dice Agregar puerto.. en exepciones ahi.. y luego le dabas el nombre q querias y debajo el numero y elegir TCP o UDP y listo, pero talvez hice las cosas mal siempre y solo tuve suerte ;)
Cita de: XXX-ZERO-XXX en 4 Noviembre 2010, 16:15 PM
Bueno pero si te fijas dije q tambien lo probe con el firewall desactivado.. pero gracias por tu explicacion y corrigeme si me equivoco.. entonces me estas diciendo que cuando pongo lo de desbloquear solo habilita esa aplicacion y si le cambio de nombre a la aplicacion me saldria otra vez para desbloquearla, no tengo nada para probar ahora por eso pregunto.Y despues eso q dices para abrir el puerto, yo pense q se hacia donde dice Agregar puerto.. en exepciones ahi.. y luego le dabas el nombre q querias y debajo el numero y elegir TCP o UDP y listo, pero talvez hice las cosas mal siempre y solo tuve suerte ;)
Efectivamente si cambias el nombre a la aplicacion te pedira de nuevo para desbloquearla, incluso si cambias de carpeta el ejecutable a otra diferente tambien te dira para desbloquear. Esta parte del Firewall de windows que te pide desbloquear es para que la aplicacion tenga permisos de enviar y recibir por internet pero no tiene que ver con los puertos.
Si te fijas bien la parte de excepciones del firewall te dice que bloquea las conexiones entrantes excluyendo las que tu espesifiques en la parte de excepciones. Esta parte no tiene nada que ver con abrir o cerrar puertos, incluso te pongo como ejemplo que si montas un servidor apache ( Servidor Web ), y no desbloqueas el puerto apropiado para esta aplicacion nadie podra accedera a ese servidor aunque el sistema funcione perfectamente.
Bueno lo tendre en cuenta pero q raro q nunca tuve problema.. xD