使用 Python 套接字发送字符串

在本文中,我们将介绍套接字、套接字中的内置方法、服务器和客户端,以及如何在 Python 中实现与套接字的成功通信。套接字在服务器端和客户端之间起着桥梁的作用,用于接收和发送数据。

在 Python 代码中,我们将创建套接字,在套接字的帮助下,我们将传递字符串并在客户端和服务器之间建立连接。

Python 中的套接字

套接字定义为为接收和发送数据而构建的端点。单个网络中有两个套接字;套接字中存在 IP 地址和端口的组合。

单个设备有 n 个基于端口号的套接字。不同类型的端口可用于不同的协议。

以下是一些标准端口号及其协议。

协议 描述
HTTP 它的端口号是 80,它的 Python 库是 httpliburllib 和 xmlrpclib。HTTP 端口用于网页。
FTP 它的端口号是 20,它的 Python 库是 ftplib 和 urllib。此端口用于文件传输。
NNTP 它的端口号是 119,它的 Python 库是 nntplib。此端口用于未发送的消息。
SMTP 它的端口号是 25,它的 Python 库是 smtplib。此端口用于发送电子邮件。
TELNET 它的端口号是 23,它的 Python 库是 telnetlib。此端口用于命令行。
Pop3 它的端口号是 110,它的 Python 库是 poplib。此端口用于获取电子邮件。
Gopher 它的端口号是 70,它的 Python 库是 gopherlib。此端口用于文件传输。

在 Python 中实现套接字的内置方法

我们必须导入 Socket 模块或框架以在 Python 中实现套接字。所有这些模块都包含内置方法,这些方法有助于创建套接字并有助于相互关联。

以下是一些强大的套接字内置方法:

  • Socket.socket() 方法创建套接字。双方都需要它,例如客户端和服务器端。
  • Socket.accept() 用于接受连接。Socket.accept() 方法返回一对值,例如 (conn, address)。
  • Socket.bind() 用于绑定指定为参数的地址。
  • Socket.close() 表示套接字已关闭。
  • Socket.connect() 用于连接作为参数指定的地址。
  • Socket.listen() 用于侦听服务器或客户端中的命令。

Socket 编程中的客户端和服务器

下面,你将了解套接字编程中客户端和服务器的含义。

客户

从服务器接收信息或数据的计算机或软件称为客户端。客户端向服务器请求服务; Web 浏览器是客户端的最佳示例。

服务器

服务器是用于管理网络资源的程序、计算机或设备。服务器可以是同一设备、本地计算机或远程计算机。

在 Python Socket 中使用客户端-服务器通信发送字符串

我们将创建两个文件用于从 Python 文件中的套接字进行通信——一个用于服务器端,另一个用于客户端。并且将有两个用于建立连接的程序。

Python Socket 中的服务器端

我们将首先创建服务器端代码。我们将使用内置方法来创建服务器端代码。

服务器端的代码如下。

import socket

s = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)          # Socket will create with TCP and IP protocols
s.bind(('localhost',9999))   # This method will bind the sockets with server and port no
s.listen(1)                  # Will allow a maximum of one connection to the socket
c, addr = s.accept()         # will wait for the client to accept the connection

print("CONNECTION FROM:", str(addr)) #Will display the address of the client

c.send(b"HELLO, Are you enjoying programming?/Great! Keep going")  #Will send message to the client after encoding

msg = "Take Care.............."
c.send(msg.encode())
c.close()   #Will disconnect from the server

输出:

This connection is from: ('127.0.0.1', 50802)

Python Socket 中的客户端

客户端将消息发送到服务器,服务器将响应该消息。客户端还将在代码中使用内置方法。

在客户端,我们将首先创建一个套接字。然后我们将连接主机的 IP 地址和端口号。

代码:

import socket

s = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)              # Socket will create with TCP and, IP protocols
s.connect(('localhost', 9999))   # Will connect with the server
msg = s.recv(1024)               # Will receive the reply message string from the server at 1024 B

while msg:
  print('Received:' + msg.decode())
  msg = s.recv(1024)             # Will run as long as the message string is empty

s.close()                        # Will disconnect the client

输出:

The message is Revived: HELLO, Are you enjoying programming?    Great! Keep going

The message is Revived: Take Care..............

当给定的代码运行时,将在服务器和客户端之间建立连接。连接后,客户端屏幕将显示一条消息。

消息将是:

HELLO, Are you enjoying programming?    Great! Keep going

另一条消息将是:

Take Care..............

此消息将显示在客户端,因为它是由服务器端发送的。这样,代码将运行并给出通过 Python 中的套接字发送字符串的输出。