Red de conocimiento informático - Problemas con los teléfonos móviles - En la programación vs socket TCP, si el cliente envía una solicitud para comenzar a desconectarse, ¿cómo detecta el servidor esta solicitud?

En la programación vs socket TCP, si el cliente envía una solicitud para comenzar a desconectarse, ¿cómo detecta el servidor esta solicitud?

Echa un vistazo

/library/system.net.sockets.aspx

Aquí hay muchos ejemplos

Pero tal vez puedas mira los específicos Eres más optimista que yo... Después de todo, sabes más que yo

Quizás puedas usar las clases que contiene

En este caso, Sólo les mostraré dos... ·

Clase TcpListener

Escucha conexiones de clientes de red TCP.

usando System;

usando System.IO;

usando System.Net;

usando System.Net.Sockets;

usando System.IO;

usando System.Net;

usando System.Net.Sockets;

p>

usando System .Text;

clase MyTcpListener

{

public static void Main()

{

servidor TcpListener =null;

try

{

// Configure TcpListener en el puerto 13000.

Puerto int32 = 13000

IPAddress localAddr = IPAddress.Parse("127.0.0.1");

// servidor TcpListener = nuevo TcpListener(puerto);

servidor = nuevo TcpListener(localAddr); port);

// Comienza a escuchar las solicitudes de los clientes.

server.Start();

// Búfer para leer datos

Byte[] bytes = new Byte[256];

String data = null

// Ingresa al bucle de escucha.

while(true)

{

Console.Write("Esperando una conexión... ");

// Realiza una llamada de bloqueo para aceptar solicitudes.

// También puedes usar server.AcceptSocket() aquí.

TcpClient client = server.AcceptTcpClient()

Console.WriteLine( "¡Conectado!");

data = null;

// Obtener un objeto de flujo para lectura y escritura

NetworkStream stream = client.GetStream()

int i;

// Bucle para recibir todos los datos enviados por el cliente.

while((i = stream.Read(bytes, 0, bytes.Length))!

=0)

{

// Traduce bytes de datos a una cadena ASCII.

datos = System.Text.Encoding.ASCII.GetString(bytes, 0 , i);

Console.WriteLine("Recibido: {0}", datos);

// Procesa los datos enviados por el cliente.

data = data.ToUpper();

byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

// Enviar una respuesta.

stream.Write(msg, 0, msg.Length);

Console.WriteLine("Enviado: {0}", datos

}

// Apagar y finalizar la conexión

client.Close();

}

}

catch(SocketException e )

{

Console.WriteLine("SocketException: {0}", e

}

finalmente

{

// Deja de escuchar nuevos clientes.

server.Stop();

}

Consola. WriteLine("\nPresiona enter para continuar...");

Console.Read()

}

}

; La clase TcpClient

proporciona conexiones de cliente para servicios de red TCP.

conexión vacía estática (servidor de cadena, mensaje de cadena)

{

prueba

{

// Cree un TcpClient.

// Nota, para que este cliente funcione necesita tener un TcpServer

// conectado a la misma dirección especificada por el servidor, puerto

// combinación.

Puerto int32 = 13000;

Cliente TcpClient = new TcpClient(servidor, puerto

// Traducir lo pasado); mensaje en ASCII y guárdelo como una matriz de bytes.

Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

// Obtener una secuencia de cliente para lectura y escritura.

// Stream stream = client.GetStream();

NetworkStream stream = client.GetStream();

// Enviar el mensaje al TcpServer conectado

stream.Write(data, 0, data.Length

Console.WriteLine("Enviado: {0}", mensaje); >

// Recibe la respuesta TcpServer.

// Buffer para almacenar los bytes de respuesta.

data = new Byte[256];

// Cadena para almacenar la representación ASCII de la respuesta.

String ResponseData = String.Empty;

// Lee el primer lote de bytes de respuesta de TcpServer.

Int32 bytes = stream.Read(datos, 0, datos.Longitud);

respuestaData = System.Text.Encoding.ASCII.GetString(datos, 0, bytes);

Consola .WriteLine("Recibido: {0}", datos de respuesta

// Cerrar);

e todo.

stream.Close();

client.Close();

}

catch (ArgumentNullException e)

{

Console.WriteLine("ArgumentNullException: {0}", e

}

catch (SocketException e) <); /p>

{

Console.WriteLine("SocketException: {0}", e);

}

Console.WriteLine("\ n Presione Enter para continuar...");

Console.Read();

}