Autor
|
Tema: [C#] Conectar Socket (denegación) (Leído 8,325 veces)
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Buenas, Tengo un problema a la hora de estableces una conexión socket con la pc. IPEndPoint endPoint = new IPEndPoint (IPAddress .Parse("89.140.16.6"), 80);sck.Connect(endPoint);
Y me salta este error: Me dice que el equipo denegó la conexión, y la IP que tengo colocada es la que me aparece en: http://www.cual-es-mi-ip.net/ PD: No tengo ningún puerto abierto. (modem) He pensado en bajarme Xampp y cambiar la ip por localhost pero no se si funcionará en W10 y si funcionará como espero. Su supieran a que se debe dicho error lo agradecería. Cualquier información adicional es bienvenida. Saludos.
|
|
« Última modificación: 1 Septiembre 2015, 01:37 am por kub0x »
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
kondrag_X1
Desconectado
Mensajes: 157
|
si trabajas en tu propia máquina porque no usas 127.0.0.1???
|
|
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
si trabajas en tu propia máquina porque no usas 127.0.0.1???
Gracias por tu respuesta. Parece funcionar en la clase Client. Pero en la parte Server tengo esto: Socket sck = new Socket (AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp); sck .Bind(new IPEndPoint (127 .0 .0 .1, 80));sck.Listen(0);
Y me marca error en IPEndPoint: Cuando me debería aceptar el mismo parámetro que en Client, pero no. Saludos.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
me marca error en IPEndPoint: Fíjate bien en el mensaje de error, ¿qué te dice?, que no hay ningún constructor que acepte 4 parámetros, por ende, hazte la siguiente pregunta: ¿Qué estoy haciendo mal para que detecte estar pasándole 4 argumentos en lugar de dos?. Cuando me debería aceptar el mismo parámetro que en Client, pero no. Es obvio que el código no puede compilar ya que hay un error de sintaxis, no puedes escribir una IP tal cual, se espera un valor entero y no puede contener puntos, lo que escribiste no es "nada", pero es que de todas formas no le estás intentando pasar el mismo valor. ya que en la primera imagen usas el overload que toma cómo argumento un objeto IPAddress, y en la segunda imagen, la del error, intentas utilizar el constructor que toma cómo argumento un valor Int64, intentando pasarle cómo argumento una IP tal cual, la cual obviamente no sep uede reconocer como un valor entero... En la primera imagen usas la función Parse para parsear una cadena de texto que contiene una IP, hay mucha diferencia, en la segunda imagen no lo haces, usas el otro constructor. Saludos
|
|
« Última modificación: 30 Agosto 2015, 23:28 pm por Eleкtro »
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Gracias por tu respuesta. Creo que era problema al darle valor. Ahora el problema es que me deniegan el acceso al socket: La cosa es que en cliente me va bien, me muestra "introduzca el mensaje": Socket sck = new Socket (AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp); IPEndPoint endPoint = new IPEndPoint (IPAddress .Parse("127.0.0.1"), 80); sck.Connect(endPoint); Console.WriteLine("Introduzca su mensaje: "); string msg = Console.ReadLine(); byte[] msgBuffer = Encoding.Default.GetBytes(msg); sck.Send(msgBuffer, 0, msgBuffer.Length, 0); byte[] buffer = new byte[255]; int rec = sck.Receive(buffer, 0, buffer.Length, 0); Array.Resize(ref buffer, rec); Console.WriteLine("Recibo: {0}", Encoding.Default.GetString(buffer)); Console.ReadKey
Y el problema me lo da en el servidor al ejecutarlo: Socket sck = new Socket (AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp); IPEndPoint endPoint = new IPEndPoint (IPAddress .Parse("127.0.0.1"), 80); sck.Bind(endPoint); sck.Listen(0); Socket acc = sck.Accept(); byte[] buffer = Encoding.Default.GetBytes("Hola Client!"); acc.Send(buffer, 0, buffer.Length, 0); int rec = acc.Receive(buffer, 0, buffer.Length, 0); Array.Resize(ref buffer, rec); Console.WriteLine("Mostrando: {0}", Encoding.Default.GetString(buffer)); sck.Close(); acc.Close(); Console.ReadKey();
¿A que puede deberse esto? ¿Puede estar ocupado el sockets? Saludos.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buenas! He ejecutado tu snippet y va perfecto. Ahora, el método main me queda así: static void Main(string[] args) { System.Threading.Thread t = new System.Threading.Thread(Listen ); t.Start(); System.Threading.Thread.Sleep(1000); Connect(); }
Debes de hacer un método para el Listen y otro para el Connect y primero llamas al Listen desde el hilo, esperas 1 seg y llamas a Connect. No he tocado nada de tu code. Pruébalo y nos cuentas. Saludos.
|
|
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Gracias por su respuesta. He logrado algo más, pero me he quedado un poco atrancado por acá. Tengo esto en server: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace Server { class Program { static void Main(string[] args) { Socket sck = new Socket (AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp); IPEndPoint endPoint = new IPEndPoint (IPAddress .Parse("127.0.0.1"), 80); System.Threading.Thread.Sleep(1000); sck.Connect(endPoint); sck.Listen(0); Socket acc = sck.Accept(); byte[] buffer = Encoding.Default.GetBytes("Hola Client!"); acc.Send(buffer, 0, buffer.Length, 0); int rec = acc.Receive(buffer, 0, buffer.Length, 0); Array.Resize(ref buffer, rec); Console.WriteLine("Mostrando: {0}", Encoding.Default.GetString(buffer)); sck.Close(); acc.Close(); Console.ReadKey(); } } }
Si no coloco: sck.Listen(0);
Me da este mensaje: Y si coloco el sck.Listen(0) me da esto: Parece que fallo en algo... y no doy con ello. Disculpa las molestias ocasionadas. Y aquí por si quiere ver la parte client (aquí creo que no me pasa nada ya que lo inicio y me dice que ingrese un mensaje, pero no recibo respuestas): using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace Client { class Program { static void Main(string[] args) { Socket sck = new Socket (AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp); IPEndPoint endPoint = new IPEndPoint (IPAddress .Parse("127.0.0.1"), 80); sck.Connect(endPoint); Console.WriteLine("Introduzca su mensaje: "); string msg = Console.ReadLine(); byte[] msgBuffer = Encoding.Default.GetBytes(msg); sck.Send(msgBuffer, 0, msgBuffer.Length, 0); byte[] buffer = new byte[255]; int rec = sck.Receive(buffer, 0, buffer.Length, 0); Array.Resize(ref buffer, rec); Console.WriteLine("Recibo: {0}", Encoding.Default.GetString(buffer)); Console.ReadKey(); } } }
Lo tengo ordenados por 2 proyectos, osea Client y Server. Gracias de nuevo. Más o menos me acerco más al problema. Pero no se es raro. Saludos.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
¿Por que en el server haces un connect antes que el listen? El server bindea y escucha nada más, el cliente sólo conecta. Primero ejecuta el server, déjalo en segundo plano corriendo y acto seguido ejecuta el cliente, dos .exe independientes como bien dices. Debería funcionar. Si no sigues los pasos descritos seguirá teniendo problemas. Suerte y nos cuentas Saludos.
|
|
|
En línea
|
|
|
|
DeMoNcRaZy
Desconectado
Mensajes: 420
$~*|_
|
Me quedo atrapado en escuchar el listen. //System.Threading.Thread t = new System.Threading.Thread(endPoint);
No logro encontrar que valor devolverle. Pongo endPoint o sck y me subraya en error. Por lo que he intentado hacerlo así: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace Server { class Program { static void Main(string[] args) { Socket sck = new Socket (AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp); IPEndPoint endPoint = new IPEndPoint (IPAddress .Parse("127.0.0.1"), 80); //System.Threading.Thread t = new System.Threading.Thread(endPoint); sck.Listen(0); System.Threading.Thread.Sleep(1000); sck.Connect(endPoint); Socket acc = sck.Accept(); byte[] buffer = Encoding.Default.GetBytes("Hola Client!"); acc.Send(buffer, 0, buffer.Length, 0); int rec = acc.Receive(buffer, 0, buffer.Length, 0); Array.Resize(ref buffer, rec); Console.WriteLine("Mostrando: {0}", Encoding.Default.GetString(buffer)); sck.Close(); acc.Close(); Console.ReadKey(); } } }
Pero me marca que no le paso al sck.Listen un argumento válido. Gracias y disculpe las molestias ocacionadas. Saludos.
|
|
|
En línea
|
Esta página web no está disponible - Google Chrome
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buenas de nuevo.
En ese code antes del Listen de falta bindear el socket al EndPoint que has instanciado justo una linea arriba.
Recuerda:
El server primero instancia el endpoint, se bindea o se liga o se asocia (sinónimos de bindear) al endpoint y luego se hace el listen.
Una vez que el listen veas que funciona se corre el cliente y el server debería aceptarlo.
Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Denegación del servicio en vb
« 1 2 »
Programación Visual Basic
|
qiqeroot
|
18
|
9,706
|
29 Noviembre 2006, 18:05 pm
por xDie
|
|
|
Denegacion de servicio
Programación Visual Basic
|
elmaro
|
8
|
6,046
|
27 Agosto 2007, 19:33 pm
por elmaro
|
|
|
Conectar Socket a servicio No IP
Programación C/C++
|
JavierJV
|
6
|
5,459
|
22 Enero 2011, 20:38 pm
por JavierJV
|
|
|
Multithread Socket (Thread per Socket)not Complete
« 1 2 »
Programación Visual Basic
|
ntaryl
|
12
|
9,266
|
10 Febrero 2012, 18:42 pm
por ntaryl
|
|
|
Denegación de servicio en iOS al conectar a una WiFi
Noticias
|
wolfbcn
|
0
|
1,201
|
25 Abril 2015, 02:24 am
por wolfbcn
|
|