Programación básica de Socket TCP/IP en Python

Para seguirme en este artículo, tendrá que tener a Python instalado. He cubierto esto en un artículo anterior aquí sobre AC. Estoy seguro de que puede encontrarlo 🙂

El código escrito en el artículo es una plataforma cruzada al menos entre Windows XP y Linux. Le recomiendo que escriba el código en un editor de texto que admite la sangría adecuada y la sintaxis destacada, por ejemplo inactiva (que se cubrió en un artículo anterior) o Vim.

Lo primero es lo primero. Necesitamos importar la biblioteca Socket. Esto se hace con:

Importar socket
y debería estar alrededor de la parte superior de su código, ya que querremos usar la biblioteca pronto. En segundo lugar, crearemos una instancia de un socket, que podremos usar para conexiones.
s = Socket.socket (Socket.af_inet, Socket.sock_stream)

Ahora podemos usar s para todas nuestras conexiones, para enviar Datos a través de s Usaríamos s.send () para recibir que usaríamos s.recv () . Antes de que podamos usar esas funciones, necesitamos conectar () a un servicio. Usaré http://www.google.com para mi ejemplo.
s.connect ((“www.google.com”, 80))

Dado que HTTP usa más comúnmente el puerto 80, ese es el puerto que uso cuando me conecto a Google. HTTP está diseñado para esperar a que el cliente (EE. UU.) Solicite un documento o archivo antes de hablar con nosotros. Esto significa que tenemos que dar el primer paso, ¿por qué no le pedimos a Google la página principal? b> Estos comandos enviarán un comando http (“get”) seguido de un parámetro (el corte) al servidor, también agregamos una nueva línea (n) al final, para asegurarnos de que el servidor interprete esto como un solo comando . Este es un excelente ejemplo de cómo funcionan los enchufes. Enviamos el comando HTTP real, en texto plano, al servidor. ¡Este es el mismo comando enviado por su navegador cuando solicita la página principal de Google! ¡Imagina las posibilidades! 🙂

READ  Creación de excelentes plantillas gráficas en Excel

Ahora, tenemos la respuesta de Google esperándonos, sin embargo, debemos aceptar si antes de poder usarlo. Usaremos el comando que mencioné anteriormente, s.recv () . También necesitaremos especificar la cantidad de datos que deseamos descargar. Queremos 1024 bytes. Además de eso, querremos verificar si estamos sin datos, o si hay más espera, y querremos almacenar los datos en una variable.

mientras 1:
recibido = s.recv (1024)
Si se recibe:
imprime recibido

ahora, a menos que lo sepa desde anteriormente (lo cual debería, de lo contrario, la mayor parte de esto Probablemente se verá muy avanzado para usted), la sangría es extremadamente crucial en Python. Si su sangría es incorrecta, su código no se ejecutará, así que asegúrese de sangrar el código correctamente. Ahora explicaré brevemente el código escrito anteriormente. La primera línea inicia un bucle de tiempo, básicamente le dice a la aplicación que se ejecute para siempre (tendrá que apagarla usted mismo). En segundo lugar, la línea recibida = S.Recv (1024) asigna los datos recién recibidos a la variable llamada “recibida. La tercera línea verifica que recibió no está vacía, y la última y última línea imprime datos en la pantalla. Si ahora se ejecuta, verá el HTML desde el sitio web de Google en su terminal.

El código completo ahora debería verse así:

Importar socket
S = Socket.socket (Socket.af_inet, Socket.sock_stream)
S.Connect ((“www.google.com”, 80)
s.send (“get /n”)
mientras 1 :
recibido = s.recv (1024)
Si se recibe:
Imprimir recibido

Felicitaciones, ha conectado a Google!

El siguiente ejemplo es un poco más emocionante. Ahora iniciaremos sesión en un canal IRC que visito con frecuencia, diremos algunas líneas y finalmente cerraremos. ¡Este no será un cliente IRC utilizable de ningún tipo, pero le dará una mejor idea de cómo funcionan los sockets y el IRC!

READ  Cómo crear un álbum de fotos web en Dreamweaver

Tomamos nuestro código existente y lo modificamos un poco, agregaremos algunos IRC Conecte los comandos y también cambie el servidor y el puerto al que nos conectamos. El código ahora se ve así:

Importar socket
S = Socket.socket (Socket.af_inet, Socket.sock_stream)
s.connect (“irc.freenode.org “, 6667))
S.Send (” Nick Python_ircern “)
S.Send (” Usuario Ircer 8 *: Mr Ircern “)
S.Send (” Unirse #Gentlegeeksn “)
s.send (“privsg #gentlegeeks: ¡Hola chicos! N”)
mientras 1:
recibido = s.recv (1024)
Si se recibe:
Imprimir recibido
</p >

Como puede ver, el código sigue siendo el mismo que usamos para Google, aunque, en la superficie, los dos servicios son muy diferentes. Lo que he cambiado es que ahora nos conectamos a IRC.Freenode.org, utilizando el puerto 6667. Esta es una red de chat ampliamente utilizada y aloja muchos canales relacionados con el software. En la línea después de eso, establecemos nuestro apodo en “Python_ircer”, por supuesto, puede cambiar esto. Sin embargo, deje la nueva línea al final y no use caracteres numéricos no alfa. Después de esa línea, establecemos nuestro “nombre real”: también puede cambiar esto. En tercer lugar, nos unimos a #gentlegeeks, que es un canal en el que se me puede encontrar; puede cambiar esto, por supuesto. Sin embargo, sería bueno saber de usted, ¡así que es muy posible que lo sea! Por último, enviamos un mensaje al canal, el mensaje debe prepararse con un colon si consiste en múltiples palabras, esto tiene que ver con la forma en que se diseñó el protocolo IRC.

allí lo tienes, ¡Una conexión IRC desde Python!

Espero que hayas disfrutado de este artículo, cualquier comentario, comentario, llamas que puedas tener son muy bienvenidas. ¡Espero verte en el canal!

READ  Cómo hacer un mago perfecto en la historia de Maple

referencia: