Acerca del conocimiento de sockets en .net
1. ¿Qué es un socket?
El llamado socket generalmente también se denomina "socket". Las aplicaciones generalmente realizan solicitudes a la red o responden a solicitudes de red a través de "sockets". ". Tomando J2SDK-1.3 como ejemplo, las bibliotecas de clases Socket y ServerSocket se encuentran en el paquete java .net. ServerSocket se usa en el lado del servidor y Socket se usa al establecer una conexión de red. Cuando la conexión sea exitosa, ambos extremos de la aplicación generarán una instancia de Socket, operarán esta instancia y completarán la sesión requerida. Para una conexión de red los sockets son iguales, no hay diferencia, no hay diferente nivel según estén del lado del servidor o del lado del cliente. Ya sea Socket o ServerSocket, su trabajo se completa a través de la clase SocketImpl y sus subclases.
API de socket importante
API de socket importante: java.net.Socket hereda de java.lang.Object. Tiene ocho constructores y no muchos métodos. Los tres se presentan a continuación. métodos más utilizados, puede consultar la documentación de JDK-1.3 para conocer otros métodos.
El método Accept se utiliza para "bloquear" hasta que se acepte una conexión y devuelve la instancia del objeto Socket de un cliente. "Bloqueo" es un término que hace que un programa "permanezca" temporalmente en este lugar hasta que se genera una sesión y luego el programa continúa, por lo general el "bloqueo" es causado por un bucle;
El método getInputStream obtiene la entrada de la conexión de red y devuelve una instancia del objeto InputStream.
El otro extremo de la conexión del método getOutputStream obtendrá la entrada y devolverá una instancia del objeto OutputStream. Nota: Tanto el método getInputStream como el método getOutputStream pueden generar una IOException, que debe detectarse, porque el objeto de secuencia que devuelven suele ser utilizado por otro objeto de secuencia.
2. Cómo desarrollar un programa modelo Servidor-Cliente
Principio de desarrollo:
El servidor usa ServerSocket para escuchar el puerto especificado. a voluntad (debido a que los puertos por debajo de 1024 generalmente son puertos reservados y no se pueden usar arbitrariamente en algunos sistemas operativos, por lo que se recomienda usar puertos mayores que 1024), esperando las solicitudes de conexión del cliente Después de que el cliente se conecta, se genera una sesión; una vez completada la sesión, la conexión se cierra.
El cliente utiliza Socket para emitir una solicitud de conexión a un determinado puerto de un servidor en la red. Una vez que la conexión se realiza correctamente, se abre la sesión y se cierra el Socket. El cliente no necesita especificar el puerto abierto y, por lo general, asigna temporal y dinámicamente un puerto superior a 1024.
La interfaz Socket es la API de la red TCP/IP. La interfaz Socket define muchas funciones o rutinas que los programadores pueden utilizar para desarrollar aplicaciones en la red TCP/IP. Para aprender a programar redes TCP/IP en Internet, debe comprender la interfaz Socket. Los diseñadores de la interfaz Socket primero colocaron la interfaz en el sistema operativo Unix. Si comprende la entrada y salida del sistema Unix, es fácil entender Socket. La transmisión de datos de Network Socket es un tipo especial de E / S, y Socket también es un descriptor de archivo. Socket también tiene una función llamada Socket () similar a abrir un archivo. Esta función devuelve un descriptor de socket entero. El establecimiento de conexión posterior, la transmisión de datos y otras operaciones se implementan a través de este Socket.
Hay dos tipos de Socket comúnmente utilizados: Streaming Socket (SOCK_STREAM) y Datagram Socket (SOCK_DGRAM). Streaming es un Socket orientado a la conexión, que está dirigido a aplicaciones de servicios TCP orientadas a la conexión; Datagram Socket es un Socket sin conexión, que corresponde a aplicaciones de servicio UDP sin conexión. Creación de socket Para crear un Socket, el programa puede llamar a la función Socket, que devuelve un identificador similar a un descriptor de archivo. El prototipo de la función de socket es: int socket (dominio int, tipo int, dominio de protocolo int especifica la familia de protocolos utilizada, generalmente AF_INET, que representa la familia de protocolos de Internet (la familia de protocolos TCP/IP especifica el); tipo de socket: SOCK_STREAM o SOCK_DGRAM, la interfaz Socket también define el Socket original (SOCK_RAW), lo que permite que el programa utilice protocolos de bajo nivel al protocolo generalmente se le asigna un valor de 0; La llamada a Socket() devuelve un descriptor de socket entero, que puede utilizar en llamadas posteriores. El descriptor de Socket es un puntero a una estructura de datos interna, que apunta a la entrada de la tabla de descriptores. Al llamar a la función Socket, el cuerpo de ejecución del socket creará un Socket. De hecho, "crear un Socket" significa asignar espacio de almacenamiento para una estructura de datos de Socket. El ejecutivo de Socket gestiona la tabla de descriptores por usted. Una conexión de red entre dos programas de red incluye cinco tipos de información: protocolo de comunicación, dirección de protocolo local, puerto de host local, dirección de host remoto y puerto de protocolo remoto. La estructura de datos de Socket contiene estos cinco tipos de información. Los enchufes también se utilizan ampliamente en software de medición