从客户端发送和接收消息的Python程序
套接字编程是一种连接网络上的两个节点以相互通信的方式。一个套接字(节点)在 IP 的特定端口上侦听,而另一个套接字伸手到另一个以形成连接。服务器形成侦听器套接字,而客户端伸手到服务器。
套接字编程是通过导入套接字库并制作一个简单的套接字开始的。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
这里我们创建了一个套接字实例并传递了两个参数。第一个参数是AF_INET ,第二个参数是SOCK_STREAM 。 AF_INET是指地址族 ipv4。 SOCK_STREAM 表示面向连接的 TCP 协议。
注意:有关更多信息,请参阅Python中的套接字编程
现在我们可以使用 Server 连接到服务器:
服务器是为网络或 Internet 上的其他计算机提供服务的程序。同样,客户端是从服务器接收服务的程序。当服务器想要与客户端通信时,就需要一个套接字。套接字是服务器和客户端之间的连接点。
向客户端发送消息的 TCP/IP 服务器程序。
Python3
import socket
# take the server name and port name
host = 'local host'
port = 5000
# create a socket at server side
# using TCP / IP protocol
s = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
# bind the socket with server
# and port number
s.bind(('', port))
# allow maximum 1 connection to
# the socket
s.listen(1)
# wait till a client accept
# connection
c, addr = s.accept()
# display client address
print("CONNECTION FROM:", str(addr))
# send message to the client after
# encoding into binary string
c.send(b"HELLO, How are you ? \
Welcome to Akash hacking World")
msg = "Bye.............."
c.send(msg.encode())
# disconnect the server
c.close()
Python3
import socket
# take the server name and port name
host = 'local host'
port = 5000
# create a socket at client side
# using TCP / IP protocol
s = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
# connect it to server and port
# number on local computer.
s.connect(('127.0.0.1', port))
# receive message string from
# server, at a time 1024 B
msg = s.recv(1024)
# repeat as long as message
# string are not empty
while msg:
print('Received:' + msg.decode())
msg = s.recv(1024)
# disconnect the client
s.close()
从服务器接收消息的 TCP/IP 服务器程序。
Python3
import socket
# take the server name and port name
host = 'local host'
port = 5000
# create a socket at client side
# using TCP / IP protocol
s = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
# connect it to server and port
# number on local computer.
s.connect(('127.0.0.1', port))
# receive message string from
# server, at a time 1024 B
msg = s.recv(1024)
# repeat as long as message
# string are not empty
while msg:
print('Received:' + msg.decode())
msg = s.recv(1024)
# disconnect the client
s.close()
注意:在两个单独的 DOS 窗口中打开,首先执行服务器,然后执行客户端。
服务器输出:
客户端输出: