SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: lauri en Jueves 6 de Julio de 2006, 12:24
-
haber pues esta es mi duda haber si alguien me la puede resolver, creo que es muy sencillita, pues bien este es el codigo del cliente
TcpClient client = new TcpClient("127.0.0.1", 65000);
Byte[] data = System.Text.Encoding.ASCII.GetBytes(txbconectar.Text);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
y este el codigo del servidor
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
String data = null ;
TcpListener tcpListener = new TcpListener(ipAddress, 65000);
tcpListener.Start( );
for (;;)
{
Socket socketForClient = tcpListener.AcceptSocket( );
if (socketForClient.Connected)
{
MessageBox.Show("Client connected");
byte [] bytes = new byte [1024];
int bytesRec = socketForClient.Receive(bytes);
data = Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("<EOF>") > -1)
break ;
MessageBox.Show(data);
}
bien pues con la ip 127.0.0.1 me funciona todo perfectamente
bien ahora yo hago que el servidor sea un equipo que tenga al lado y cuando el cliente que esta en otro equipo se quiere conectar le pongo la ip del que esta haciendo como servidor
bien pues me dice que
"Información adicional: Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder"
haber si me podeis decir que tengo que hacer si es por el codigo o por otras razones gracias de antemano un saludo a todos
-
ya le diste permisos en el firewall de windows xp?
-
con lo de los permisos quieres decir que en el panel de control desactive el firewall de windows??
eso si que lo he echo de los permisos ni idea
-
si ya no tienes activo el firewall no deberia haber problema.
En que linea te arroja el error cuando haces debug?
podrias adjuntar el proyecto al post?
-
Si tienes más de una interfaz de red (puedes ver esto usando el comando ipconfig desde Inicio ->ejecutar-> cmd -> ipconfig ) puede ser que el primero no tenga conectividad con la máquina cliente:
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
Si sólo te aparece una IP entonces es otro problema.
-
Bueno en primer lugar daros las gracias a todos.
Creo que el problema ese ya lo he solucionado ahora tengo otro , aqui os pongo el codigo de mi servidor, bien pues el cliente se conecta le envia informacion y luego se va, el servidor hace lo correspondiente , se desconecta y al final lo he resaltado con (********) cuando quiere cerrar el socket newsock.Shutdown(SocketShutdown.Both);
me da una excepcion exactamente dice
" No se ha permitido una peticon para enviar o recibir datos ya que el sockets no esta conectado y no se ha proporcionado ninguna direccion, al realizar el envio de un socket de datagramas por medio de una llamada sendto "
string message="";
string msg="";
byte[] data = new byte[1024]; //creamos un byte[] para enviar la bienvenida
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,9050);
//Con el IpAdress.Any esuchamos en cualquier interfaz de red.. y el 9050
//es el puerto en el que escuharemos
//creamos un socket de tipo internwtwork, stream y tcp
Socket newsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
newsock.Bind (ipep); //lo bindeamos para que se ancle al puerto especificaco
}
catch (SocketException)
{
//si aqui hay error es que ese puerto esta en uso y entonces es probable
//que otra instancia de este programa ya este corriendo
Console.WriteLine("Al parecer otra instancia del servidor ya esta corriendo");
return; //si es asi damos un return para salirnos de la funcion y terminar
//el programa
}
newsock.Listen(1); //escuchamos con el socket en el puerto especifaco
Console.WriteLine("Waiting for a client…");
Socket client = newsock.Accept(); //Esto acepta la conexion cuando recibe
//una peticion… esto se queda esperando hasta que ocurra
IPEndPoint newclient = (IPEndPoint)client.RemoteEndPoint; //creamos un IPEndPoint
//con la informacion del cliente
Console.WriteLine("Connected with {0} on port {1}", newclient.Address, newclient.Port);
Console.ReadLine();
//imprimimos en la pantalla que se conecto un cliente
string welcome = "Cliente conectado";
data = Encoding.ASCII.GetBytes(welcome); //Codificamos a byte [] el mensaje
//de bienvenida
int sent = SendData(client, data); //lo enviamos con nuestra funcion, pasandole
//el socket del cliente y el byte[] con el mensaje
for (int m = 0; m < 2; m++)
{//Este for nos sirve para leer infinitamente los mensajes que nos llegan
try
{
data = ReceiveData(client); //Llama a recibir mensajes del socket cliente
//esto se queda esperando hasta recibir un mensaje
message = Encoding.ASCII.GetString(data); //si recibimos un
//mensaje entonces lo decoficamos a un string
if (message!="") msg=message;
if (message == "") //si recibimos exit nos salimos..
break;
Console.WriteLine(message); //si no entonces lo imprimimos
Console .ReadLine();
m=m-1; //restamos al for para que sea infinito…
}
catch (SocketException)
{
Console.WriteLine("No se encontro conexion con el cliente {0}", newclient.Address);
return;
//si enocntramos un error es que se perido la conexion y con el return nos
//salimos de la funcion
}
}
//Damos el mensaje de que se desconecto el cliente XX con puerto XX
Console.WriteLine("Disconnected from {0} on port {1}",newclient.Address,newclient.Port);
//cerramos el socket del cliente
client.Shutdown(SocketShutdown.Both);
client.Close();
//Ceramos el socket con el que escuchamos
try
{
***************************************************************************
newsock.Shutdown(SocketShutdown.Both);
newsock.Close();
}
catch(Exception ex)
{
ex=ex;
}