Problema con Socket y Unix...

19/08/2009 - 17:57 por Claudio Quezada | Informe spam
Que tal,

Tengo un problema, he tenido que realizar una conexion via socket (mi
primera vez) a un servidor Unix al cual le envio un mensaje pero al
momento de esperar respuesta se queda esperando y finalmente cierra la
conexion por "timedout", segun la persona encargada del servidor Unix el
servicio envia respuesta pero al parecer mi cliente no es capaz de
interpretarla o algo asi...

mi codigo seria asi:

IPAddress ipAddress = Dns.GetHostEntry(Server).AddressList[0];

IPEndPoint remoteEP = new IPEndPoint(ipAddress, Port);

Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);

try
{
client.ReceiveTimeout = 8000;
client.Connect(remoteEP);
byte[] msg = Encoding.ASCII.GetBytes(psMensaje);
int bytesSent = client.Send(msg);
int bytesRec = client.Receive(bytes); ***
psMensaje = Encoding.ASCII.GetString(bytes, 0, bytesRec);
client.Shutdown(SocketShutdown.Both);
client.Close();
return psMensaje;
}
catch ...

*** En esta linea se queda por 8 segundos, que es lo que le tengo
definido, y luego se cae. Si quito "client.ReceiveTimeout" se queda
esperando eternamente...

Mi duda, hay que hacer algo especial para conectarse via socket con
unix? tengo algo mal en mi codigo (extraido de MSDN)?

Muchisimas gracias.

Otra duda, el otro dia alguien me comento que las conexiones por socket
eran "antiguas", si ya no se usa socket ¿que se usa?. Gracias

Saludos!
 

Leer las respuestas

#1 Claudio Quezada
20/08/2009 - 20:53 | Informe spam
Era un problema en las especificaciones de mensajeria, eso era todo...

Claudio Quezada escribió:
Que tal,

Tengo un problema, he tenido que realizar una conexion via socket (mi
primera vez) a un servidor Unix al cual le envio un mensaje pero al
momento de esperar respuesta se queda esperando y finalmente cierra la
conexion por "timedout", segun la persona encargada del servidor Unix el
servicio envia respuesta pero al parecer mi cliente no es capaz de
interpretarla o algo asi...

mi codigo seria asi:

IPAddress ipAddress = Dns.GetHostEntry(Server).AddressList[0];

IPEndPoint remoteEP = new IPEndPoint(ipAddress, Port);

Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);

try
{
client.ReceiveTimeout = 8000;
client.Connect(remoteEP);
byte[] msg = Encoding.ASCII.GetBytes(psMensaje);
int bytesSent = client.Send(msg);
int bytesRec = client.Receive(bytes); ***
psMensaje = Encoding.ASCII.GetString(bytes, 0, bytesRec);
client.Shutdown(SocketShutdown.Both);
client.Close();
return psMensaje;
}
catch ...

*** En esta linea se queda por 8 segundos, que es lo que le tengo
definido, y luego se cae. Si quito "client.ReceiveTimeout" se queda
esperando eternamente...

Mi duda, hay que hacer algo especial para conectarse via socket con
unix? tengo algo mal en mi codigo (extraido de MSDN)?

Muchisimas gracias.

Otra duda, el otro dia alguien me comento que las conexiones por socket
eran "antiguas", si ya no se usa socket ¿que se usa?. Gracias

Saludos!

Preguntas similares