¿Cómo utilizar socket para especificar el paquete de datos enviado por la IP que desea recibir?
Al utilizar el método de adquisición del segmento de clientes, puede utilizar la IP especificada del cliente. El código es aproximadamente el siguiente.
Public void SendMessage()
{
ASCII = codificación. ASCII
//Construye un búfer de bytes para enviar.
Byte[] sendBytes = ASCII. GetBytes(SEND_MESSAGE);
//Construye un búfer de bytes para la recepción.
Byte[] recvBytes = nuevos bytes[256];
//Dirección IP.
DirecciónIP localAddr = DirecciónIP. parse(" 192.168.19.81 ");
//Punto de acceso.
IPEndPoint ephost = new IPEndPoint(local addr, PORT);
//El primer parámetro: AddressFamily = Especifica el esquema de direccionamiento que pueden usar las instancias de la clase Socket.
// Sin especificar no especifica una familia de direcciones.
//Dirección IP de Internet versión 4.
La dirección de Internet Workv6 IP versión 6.
//
//El segundo parámetro: SocketType = especifica el tipo de socket representado por la instancia de la clase Socket.
// Stream es un tipo de socket que admite transmisión de bytes confiable, bidireccional y basada en conexión sin duplicar datos ni preservar límites.
//Este tipo de socket se comunica con un único host y requiere que se establezca una conexión de host remoto antes de que pueda comenzar la comunicación.
//Este tipo de socket utiliza el Protocolo de control de transmisión (Tcp), AddressFamily puede ser InterNetwork o InterNetworkV6.
//
//El tercer parámetro: ProtocolType =Especifica el protocolo admitido por la clase Socket.
// Protocolo de control de transmisión Tcp (Tcp).
Socket s = new Socket(AddressFamily. Internet, SocketType. Stream, ProtocolType. TCP
Probar
{
/); /Intenta conectarte al host.
Conexión Sur (ephost);
//Consola. WriteLine("Enviar al servidor: {0} ", SEND_MESSAGE);
//Enviar datos al host.
// s.Send(sendBytes, sendBytes. Longitud, SocketFlags. Ninguno);
//Recibir la respuesta del servidor.
Int32 bytes = s.Receive(recvBytes, recvBytes. Longitud, SocketFlags. Ninguno);
StringBuilder buff = new StringBuilder(); (bytes & gt; 0)
// {
//Reemplace la matriz de bytes almacenada en el búfer con una cadena.
// Cadena cadena = ASCII. GetString(recvBytes, 0, bytes);
String str =
for(int I = 0; i<recvBytes.
longitud; i++)
{
str = str+recvBytes[I];
}
int iCount = 0; p> p>
iCount = int. Parse(String.Substring(13, 6));
//Agregar caché de cadenas
buff. Append(string);
//Aceptar nuevamente para ver si hay algún dato más adelante.
//bytes = s.Receive(recvBytes, recvBytes. Longitud, SocketFlags. Ninguno);
// }
Cuadro de texto 1. Texto = iCount. ToString();
}
catch(excepción ex)
{
MessageBox. Show("¡Error al conectar/enviar/recibir!");
MessageBox. display(por ejemplo, mensaje);
//Console. WriteLine("¡Error al conectar/enviar/recibir!");
//Console. WriteLine(p. ej. mensaje);
//Console. WriteLine(por ejemplo, seguimiento de pila);
}
Finalmente
{
Cierre sur();
}
}