La programación del socket de red C# puede transmitir después de que el cliente sale, el host sigue recibiendo 0.
Escribí un socket aleatorio antes, no sé si lo usarás o no
usando System;
usando System.Collections.Generic;
usando System.Text;
usando System.Net;
usando System.Net.Sockets //Puedes usar sockets
usando System.Threading; // Se pueden usar varios subprocesos
espacio de nombres threadtcpclient
{
clase Threadtcpserver
{
servidor de socket privado;
público Threadtcpserver()
{
IPAddress local = IPAddress.Parse("192.168.0.66"); p>
IPEndPoint iep = nuevo IPEndPoint(local, 13000);
servidor = nuevo Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Will socket Vinculará la palabra al punto final local
server.Bind(iep);
//Escuche en el número de puerto local 13000
server.Listen( 20 );
Console.WriteLine("Esperando a que el cliente se conecte..."
while (true)
{
);//Obtener el socket que contiene información del cliente
Socket client = server.Accept();
//Crear un objeto de hilo de servicio de mensajes
ClientThread newclient = new ClientThread(client);
//Delegar el método ClientService de la clase ClientThread al hilo
Thread newthread = new Thread(new ThreadStart(newclient.ClientService));
// Iniciar el hilo del servicio de mensajes
newthread.Start();
}
}<
/p>
static void Main(string[] args)
{
Instancia de Threadtcpserver = new Threadtcpserver()
}
}
class ClientThread
{
//La variable de conexiones representa el número de conexiones
public static int conexiones = 0;
servicio de socket público
int i;
hilo de cliente público (socket de cliente)
{
// El objeto de servicio toma el control del mensaje
this.service = clientsocket;
}
public void ClientService()
{
p>
String data = null;
byte[] bytes = nuevo byte[1024];
if (servicio!= null)
{
conexiones
}
Console.WriteLine("Nueva conexión de cliente establecida: {0} conexiones", conexiones
try
{
while ((i = service.Receive(bytes)) != 0)
{
datos = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Datos recibidos: {0}", datos);
// Procesa el mensaje enviado por el cliente, aquí se convierte a letras mayúsculas
data = data.ToUpper();
byte[] msg = System.Text.Encoding.ASCII .GetBytes(data);
//Enviar un mensaje de respuesta
service.Send(msg);
<p> Console.WriteLine("Datos enviados: {0}", datos
}
}
catch
{
}
//Cerrar el socket
service.Close();
conexiones--;
Console.WriteLine("Conexión cerrada del cliente: {0} conexiones", conexiones
}
}
}
); usando System;
usando System.Collections.Generic;
usando System.Text;
usando System.Net;
usando System .Net.Sockets;
usando System.IO;
espacio de nombres threadtcpclient
{
clase multithreadclient
{
static void Main(string[] args)
{
Cliente de socket;
byte[] buf = nuevo byte[ 1024];
entrada de cadena;
IPAddress local = IPAddress.Parse("192.168.0.68");
IPEndPoint iep = nuevo IPEndPoint (local, 13000 );
intente
{
cliente = nuevo Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(iep);
}
catch (SocketException)
{
Console.WriteLine(" No se puede conectar a ¡el servidor!");
return;
}
while (verdadero)
{
/ /Ingresa un mensaje en la consola
input = Console.ReadLine();
//Ingrese salida para desconectarse del servidor
if (input == "exit")
{ p>
break;
}
try
{
//Si el mensaje está vacío, no estará enviado
if (input != "")
{
client.Send(Encoding.ASCII.GetBytes(input));
//Obtener el número total de bytes realmente recibidos
int rec = client.Receive(buf);
Console.WriteLine(Encoding.ASCII.GetString(buf, 0 , rec ));
}
}
captura
{
}
}
Console.WriteLine("Desconectarse del servidor...");
client.Close()
}
;}
}
Utilice el puerto serie para comunicarse con el comando hardware ~AT, hay un puerto serie de control de comunicación en C#. Configure el puerto, la velocidad en baudios, etc. Puede conectarse y luego comunicarse enviando comandos ap y analizando la información recibida.