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; p>
usando System.IO;
usando System.Net;
usando System.Net.Sockets;
p>
usando System .Text;
clase MyTcpListener
{
public static void Main()
{ p>
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();
}