La redefinición de cliente tcp/ip...


¿Cómo podemos crear un Servidor TCP/IP/Cliente en Delphi?
Este artículo es una redefinido la versión de mi artículo anterior
(http://www.howtodothings.com/showarticle.asp?article=220 Hacer una solicitud de un Cliente TCP/IP (con el código de ejemplo)...). Puede ser que esto es de tarde, pero espero que sea útil. En este artículo, he tratado de explicar/discutir, en general, cómo crear TCP-IP de los clientes y servidores con Delphi.
Lo que he intentado demostrar en que el código de ejemplo?
he intentado demostrar un simple TCP-IP de la aplicación cliente que se conecta a un puerto específico en una red TCP-IP servidor y los intercambios de datos. Yo no he dicho nada sobre el servidor, excepto que mi solicitud estaba hablando a una red TCP-IP servidor escrito en Java. Pero todo lo que usted necesita hablar con un servidor es la dirección de host y el puerto/detalles del servicio. Y para hablar con el servidor, usted tiene que asegurarse de que el servidor se está ejecutando. Eso es todo. Usted no necesita preocuparse acerca de cómo ese servidor se implementa a menos que usted desee desarrollar el servidor y el cliente por sí mismo. En este artículo, te voy a dar una breve descripción de cómo escribir un TCP-IP servidor en Delphi.
Esto es lo que he hecho en que el código fuente:
1.Establecido una conexión con el servidor cuando se inicia la aplicación.
2.Utiliza un SendXml procedimiento para enviar los datos al servidor.
3.Utiliza OnClientSocketRead evento para leer los datos desde el servidor.
4.Utiliza OnClientSocketError evento para la captura de los errores
Usted verá un indicador Booleano llamado fWaiting en tanto el SendXml y OnClientSocketRead procedimientos. En mi aplicación, voy a enviar datos al servidor y esperar a que el servidor responda de nuevo. Voy a esencialmente espere a que el OnClientSocketRead evento suceda con la esperanza de que el servidor responde a la brevedad posible. Esa es la razón por la que usa el indicador Booleano fWaiting.
Dónde empezar a tener una idea de lo TCP-IP del cliente y TCP-IP servidor?
Para la gente que quiere probar, yo sugeriría a echar un vistazo a la demo proyecto llamado Chat.el dpr tanto en Delphi 5 y 6. Siguientes son los enlaces para el proyecto:
Delphi 5:
C:/ Archivos de Programa/Borland/Delphi5/Demos/Internet/Chat/chat.el dpr

Delphi 6:
C:/ Archivos de Programa/Borland/Delphi6/Demos/Internet/Chat/chat.el dpr

¿Qué es, básicamente, una red TCP-IP del cliente?
Es una aplicación que se conecta a un puerto específico en una red TCP-IP servidor y los intercambios de datos como un flujo o de texto.
¿Qué se necesita para crear uno con Delphi?
Todo lo que usted necesita es un TClientSocket componente disponible en el internet paleta establezca las siguientes propiedades:
Dirección: Usted puede introducir la dirección IP de la TCP-IP servidor que este cliente se conecta.
Host: en Lugar de la Dirección puede introducir un nombre de alias para la dirección IP aquí en la propiedad de Host. Es obvio para establecer la Dirección de Host o la propiedad. Pero, ¿qué sucede si se establece tanto? Propiedad de Host tiene prioridad sobre la propiedad de la Dirección.
Configuración de la propiedad de Host sería mejor en comparación a la Dirección de la propiedad, ya que incluso si cambia el TCP-IP servidor a otra máquina o cambiar la dirección IP a otra cosa, como siempre que se mantenga el nombre de alias mismo, usted está bien que usted no necesita preocuparse sobre el cambio en el TCP-IP del cliente. (Aunque se trate de una ligera sobrecarga de resolver el nombre de host para su correspondiente dirección IP, la pena tenerlo)
Puerto: Es un número entero válido el número de puerto donde el TCP-IP servidor está a la escucha. (y responde). Es siempre un número fijo asignado por el servidor. A este número de puerto, el cliente se conectará a enviar y recibir datos.
Servicios: Como Host y la Dirección propiedades están vinculadas entre sí por un camino, el Puerto y las propiedades del Servicio también están vinculados. En general, el Servicio es algo que el TCP-IP servidor puede proporcionar a sus clientes como http, ftp. Estos servicios estándar que se les ha asignado un número de puerto específico en el servidor. (por ejemplo, http en el puerto 80). Cómo funciona? En el servidor, hay un archivo de servicios que servicios de mapas a sus respectivos puertos. Así como eso, usted puede tener su propia descripción del servicio que se asigna a un número de puerto específico en el servidor. En ese caso, el cliente puede conectarse al servicio mediante el Servicio de la propiedad y de interactuar.

ClientType: Esta propiedad determina si la interacción entre el cliente y el servidor se produce de forma sincrónica o asincrónica.
ctNonBlocking - El valor predeterminado. Esto indica que la interacción entre el cliente y el servidor se produce de forma asíncrona. es decir, el cliente puede enviar datos al servidor y esperar a que el OnRead datos a ocurrir cuando los datos se envían desde el servidor.
ctBlocking - Esto se utiliza para que se produzca interacción sincrónica entre el servidor y el cliente.
Al hacer el código de cliente thread-safe?
Si hay más de una solicitud se envía al servidor de una aplicación cliente en un tiempo, a continuación, el código de cliente debe ser seguro para subprocesos. De lo contrario, la solicitud-respuesta puede chocar.
Al hacer el código de servidor seguro para subprocesos?
Si hay más de una solicitud se envía al servidor, ya sea de una aplicación cliente o diferentes aplicaciones de cliente en un tiempo, a continuación, el código del servidor debe ser seguro para subprocesos. Esto es aplicable a todos los TCP-IP de los servidores de escritos en otros idiomas también.
Esperanza de que me estoy haciendo a mí mismo claro en el hilo de seguridad de la parte.
Cual es el mejor lugar para poner el TClientSocket componente en una aplicación?
Se puede colocar el componente en un Formulario o DataModule. Si usted acaba de tener un solo formulario en la aplicación cliente que se comunica con un servidor, entonces está bien poner que TClientSocket componente en esa forma. Pero si tienes muchas formas en la aplicación cliente, entonces es mejor colocar el componente en un DataModule y el uso que DataModule siempre que sea necesario. He utilizado un DataModule en mi aplicación cliente desde que había muchas formas de cada hablando con el servidor en un punto diferente de tiempo.
¿Cómo se puede establecer una conexión con el servidor?
Conjunto de todas las propiedades mencionadas anteriormente y, a continuación, establezca la propiedad Active a true o llama al método Open. Una vez que establezca una conexión, puede enviar los datos mediante el SendText o SendStream método. Y usted puede utilizar el OnClientSocketRead evento para leer los datos desde el servidor.
¿Qué es una red TCP-IP servidor?
Es una aplicación que escucha en un puerto determinado y responde a los clientes. Podría ser cualquier servidores estándar como http, ftp o un servidor personalizado para su aplicación específica.
¿Qué se necesita para crear con Delphi?
Como con el cliente, necesita un TServerSocket componente con las siguientes propiedades:
Puerto: Usted puede asignar cualquier número entero válido valor. A este puerto, el cliente puede conectarse e interactuar con el servidor.
Servicios: Como te dije anteriormente, usted puede tener un nombre de servicio asociado con un número de puerto.
Cuando decimos servidor, debe ser capaz de servir a más de un cliente obviamente, a continuación, sólo tiene sentido tener un servidor. A la derecha? Ahora la siguiente pregunta es cómo estos clientes están hablando con el servidor: más de un cliente en un momento o de un cliente en un momento. Esto conduce a la siguiente configuración de la propiedad que determina si los clientes comunicarse con el servidor de forma sincrónica o asincrónica.
¿Cómo podemos manejar más de un cliente solicita a un tiempo?
La respuesta es generar un nuevo hilo para cada solicitud de cliente. Esto se puede lograr mediante el ajuste del Tipo de propiedad stThreadBlocking. ¿Desove y la destrucción de un hilo por cada solicitud de cliente de una sobrecarga? Sí. Obviamente. Pero si nuestro diseño de la aplicación lo requiere, entonces, no existe otro camino, usted tiene que tener esa sobrecarga. Podemos reducir la sobrecarga de la creación y destrucción de hilos? Sí. Podemos. Cómo? Caché de los hilos. A la derecha.
El ThreadCacheSize de la propiedad sirve a ese propósito. El valor predeterminado es de 10, pero este valor depende de su cliente las necesidades de la aplicación. Usted debe ser muy cuidadoso en la configuración de este valor. Si se establece un valor máximo, usted va a terminar en problemas de memoria. Si se establece a un valor muy bajo, el cliente dispondrá de un tiempo de espera para cada solicitud. Así que usted tiene que determinar un mejor valor basado en las estadísticas de cliente.
Si el cliente solicita que están llegando de a uno por vez, entonces se puede establecer el Tipo de propiedad a stNonBlocking.
¿Cómo podemos leer datos desde el cliente?
Como con ClientSocket, hemos OnClientRead evento para leer datos desde el cliente entre otros eventos.
Eso es todo. Espero que usted puede escribir tanto en un cliente y un servidor con esta información.
Como siempre, por favor siéntase libre de compartir sus opiniones, sugerencias y experiencias con nuestros Delphi de la comunidad.









La redefinicion de cliente tcp/ip...


La redefinicion de cliente tcp/ip... : Multi-millones de consejos para hacer su vida mas facil.


¿Como podemos crear un Servidor TCP/IP/Cliente en Delphi?
Este articulo es una redefinido la version de mi articulo anterior
(http://www.howtodothings.com/showarticle.asp?article=220 Hacer una solicitud de un Cliente TCP/IP (con el codigo de ejemplo)...). Puede ser que esto es de tarde, pero espero que sea util. En este articulo, he tratado de explicar/discutir, en general, como crear TCP-IP de los clientes y servidores con Delphi.
Lo que he intentado demostrar en que el codigo de ejemplo?
he intentado demostrar un simple TCP-IP de la aplicacion cliente que se conecta a un puerto especifico en una red TCP-IP servidor y los intercambios de datos. Yo no he dicho nada sobre el servidor, excepto que mi solicitud estaba hablando a una red TCP-IP servidor escrito en Java. Pero todo lo que usted necesita hablar con un servidor es la direccion de host y el puerto/detalles del servicio. Y para hablar con el servidor, usted tiene que asegurarse de que el servidor se esta ejecutando. Eso es todo. Usted no necesita preocuparse acerca de como ese servidor se implementa a menos que usted desee desarrollar el servidor y el cliente por si mismo. En este articulo, te voy a dar una breve descripcion de como escribir un TCP-IP servidor en Delphi.
Esto es lo que he hecho en que el codigo fuente:
1.Establecido una conexion con el servidor cuando se inicia la aplicacion.
2.Utiliza un SendXml procedimiento para enviar los datos al servidor.
3.Utiliza OnClientSocketRead evento para leer los datos desde el servidor.
4.Utiliza OnClientSocketError evento para la captura de los errores
Usted vera un indicador Booleano llamado fWaiting en tanto el SendXml y OnClientSocketRead procedimientos. En mi aplicacion, voy a enviar datos al servidor y esperar a que el servidor responda de nuevo. Voy a esencialmente espere a que el OnClientSocketRead evento suceda con la esperanza de que el servidor responde a la brevedad posible. Esa es la razon por la que usa el indicador Booleano fWaiting.
Donde empezar a tener una idea de lo TCP-IP del cliente y TCP-IP servidor?
Para la gente que quiere probar, yo sugeriria a echar un vistazo a la demo proyecto llamado Chat.el dpr tanto en Delphi 5 y 6. Siguientes son los enlaces para el proyecto:
Delphi 5:
C:/ Archivos de Programa/Borland/Delphi5/Demos/Internet/Chat/chat.el dpr

Delphi 6:
C:/ Archivos de Programa/Borland/Delphi6/Demos/Internet/Chat/chat.el dpr

¿Que es, basicamente, una red TCP-IP del cliente?
Es una aplicacion que se conecta a un puerto especifico en una red TCP-IP servidor y los intercambios de datos como un flujo o de texto.
¿Que se necesita para crear uno con Delphi?
Todo lo que usted necesita es un TClientSocket componente disponible en el internet paleta establezca las siguientes propiedades:
Direccion: Usted puede introducir la direccion IP de la TCP-IP servidor que este cliente se conecta.
Host: en Lugar de la Direccion puede introducir un nombre de alias para la direccion IP aqui en la propiedad de Host. Es obvio para establecer la Direccion de Host o la propiedad. Pero, ¿que sucede si se establece tanto? Propiedad de Host tiene prioridad sobre la propiedad de la Direccion.
Configuracion de la propiedad de Host seria mejor en comparacion a la Direccion de la propiedad, ya que incluso si cambia el TCP-IP servidor a otra maquina o cambiar la direccion IP a otra cosa, como siempre que se mantenga el nombre de alias mismo, usted esta bien que usted no necesita preocuparse sobre el cambio en el TCP-IP del cliente. (Aunque se trate de una ligera sobrecarga de resolver el nombre de host para su correspondiente direccion IP, la pena tenerlo)
Puerto: Es un numero entero valido el numero de puerto donde el TCP-IP servidor esta a la escucha. (y responde). Es siempre un numero fijo asignado por el servidor. A este numero de puerto, el cliente se conectara a enviar y recibir datos.
Servicios: Como Host y la Direccion propiedades estan vinculadas entre si por un camino, el Puerto y las propiedades del Servicio tambien estan vinculados. En general, el Servicio es algo que el TCP-IP servidor puede proporcionar a sus clientes como http, ftp. Estos servicios estandar que se les ha asignado un numero de puerto especifico en el servidor. (por ejemplo, http en el puerto 80). Como funciona? En el servidor, hay un archivo de servicios que servicios de mapas a sus respectivos puertos. Asi como eso, usted puede tener su propia descripcion del servicio que se asigna a un numero de puerto especifico en el servidor. En ese caso, el cliente puede conectarse al servicio mediante el Servicio de la propiedad y de interactuar.

ClientType: Esta propiedad determina si la interaccion entre el cliente y el servidor se produce de forma sincronica o asincronica.
ctNonBlocking - El valor predeterminado. Esto indica que la interaccion entre el cliente y el servidor se produce de forma asincrona. es decir, el cliente puede enviar datos al servidor y esperar a que el OnRead datos a ocurrir cuando los datos se envian desde el servidor.
ctBlocking - Esto se utiliza para que se produzca interaccion sincronica entre el servidor y el cliente.
Al hacer el codigo de cliente thread-safe?
Si hay mas de una solicitud se envia al servidor de una aplicacion cliente en un tiempo, a continuacion, el codigo de cliente debe ser seguro para subprocesos. De lo contrario, la solicitud-respuesta puede chocar.
Al hacer el codigo de servidor seguro para subprocesos?
Si hay mas de una solicitud se envia al servidor, ya sea de una aplicacion cliente o diferentes aplicaciones de cliente en un tiempo, a continuacion, el codigo del servidor debe ser seguro para subprocesos. Esto es aplicable a todos los TCP-IP de los servidores de escritos en otros idiomas tambien.
Esperanza de que me estoy haciendo a mi mismo claro en el hilo de seguridad de la parte.
Cual es el mejor lugar para poner el TClientSocket componente en una aplicacion?
Se puede colocar el componente en un Formulario o DataModule. Si usted acaba de tener un solo formulario en la aplicacion cliente que se comunica con un servidor, entonces esta bien poner que TClientSocket componente en esa forma. Pero si tienes muchas formas en la aplicacion cliente, entonces es mejor colocar el componente en un DataModule y el uso que DataModule siempre que sea necesario. He utilizado un DataModule en mi aplicacion cliente desde que habia muchas formas de cada hablando con el servidor en un punto diferente de tiempo.
¿Como se puede establecer una conexion con el servidor?
Conjunto de todas las propiedades mencionadas anteriormente y, a continuacion, establezca la propiedad Active a true o llama al metodo Open. Una vez que establezca una conexion, puede enviar los datos mediante el SendText o SendStream metodo. Y usted puede utilizar el OnClientSocketRead evento para leer los datos desde el servidor.
¿Que es una red TCP-IP servidor?
Es una aplicacion que escucha en un puerto determinado y responde a los clientes. Podria ser cualquier servidores estandar como http, ftp o un servidor personalizado para su aplicacion especifica.
¿Que se necesita para crear con Delphi?
Como con el cliente, necesita un TServerSocket componente con las siguientes propiedades:
Puerto: Usted puede asignar cualquier numero entero valido valor. A este puerto, el cliente puede conectarse e interactuar con el servidor.
Servicios: Como te dije anteriormente, usted puede tener un nombre de servicio asociado con un numero de puerto.
Cuando decimos servidor, debe ser capaz de servir a mas de un cliente obviamente, a continuacion, solo tiene sentido tener un servidor. A la derecha? Ahora la siguiente pregunta es como estos clientes estan hablando con el servidor: mas de un cliente en un momento o de un cliente en un momento. Esto conduce a la siguiente configuracion de la propiedad que determina si los clientes comunicarse con el servidor de forma sincronica o asincronica.
¿Como podemos manejar mas de un cliente solicita a un tiempo?
La respuesta es generar un nuevo hilo para cada solicitud de cliente. Esto se puede lograr mediante el ajuste del Tipo de propiedad stThreadBlocking. ¿Desove y la destruccion de un hilo por cada solicitud de cliente de una sobrecarga? Si. Obviamente. Pero si nuestro diseño de la aplicacion lo requiere, entonces, no existe otro camino, usted tiene que tener esa sobrecarga. Podemos reducir la sobrecarga de la creacion y destruccion de hilos? Si. Podemos. Como? Cache de los hilos. A la derecha.
El ThreadCacheSize de la propiedad sirve a ese proposito. El valor predeterminado es de 10, pero este valor depende de su cliente las necesidades de la aplicacion. Usted debe ser muy cuidadoso en la configuracion de este valor. Si se establece un valor maximo, usted va a terminar en problemas de memoria. Si se establece a un valor muy bajo, el cliente dispondra de un tiempo de espera para cada solicitud. Asi que usted tiene que determinar un mejor valor basado en las estadisticas de cliente.
Si el cliente solicita que estan llegando de a uno por vez, entonces se puede establecer el Tipo de propiedad a stNonBlocking.
¿Como podemos leer datos desde el cliente?
Como con ClientSocket, hemos OnClientRead evento para leer datos desde el cliente entre otros eventos.
Eso es todo. Espero que usted puede escribir tanto en un cliente y un servidor con esta informacion.
Como siempre, por favor sientase libre de compartir sus opiniones, sugerencias y experiencias con nuestros Delphi de la comunidad.


La redefinición de cliente tcp/ip...

La redefinición de cliente tcp/ip... : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación