Select Language

AI社区

AI技术百科

9.4、编写简单的TCP客户端

在《TCP echo服务器的建立》一节的基础上,我们还需要一个客户端,这样才能实现数据交互。

本节将编写一个这样的客户端,它和前面介绍的服务器建立连接,并发送一串简单的数据,然后读取服务器的返回数据。

首先需要创建一个 socket 对象。和服务器端一样,也是指定使用 TCP。注意,客户端和服务器端的传输层协议必须一致,不能一个使用 TCP,另一个使用 UDP。

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

然后使用 connect() 函数连接到服务器,需要指定服务的 IP 地址和端口号。这两个值都要和服务器端匹配,如服务器使用 50007 端口,那么客户端一定也要指定该端口。

s.connect((HOST, PORT))

在成功后便可以读写数据了,客户端读数据就是接收服务器端发送过来的数据,客户端写数据就是给服务器端发送数据。读数据时同样可以指定缓存区的大小,方法如下:

s.sendall(b_data)
data = s.recv(1024)

在使用完成后可以使用 close() 函数来关闭 socket,以释放资源。

s.close()


下面是完整的代码:

import socket
HOST = '127.0.0.1'                    # 服务器地址
PORT = 50007                          # 服务器端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))                # 连接服务器
data = 'Hello, world'
b_data = data.encode("utf-8")
s.send(b_data)                        # 发送数据
data = s.recv(1024)                    # 接收回应
s.close()                            # 关闭连接,释放资源
print('Received: ', data)

在启动服务器端代码后,启动客户端代码,输出如下:

$ python echo-client1.py
Received:  b'Hello, world':

在客户端退出时,服务器也会自动退出。


我要发帖
Python网络编程
2021-12-10 23:40:12加入圈子
  • 5

    条内容
早期,计算机之间没有相互连接,是孤立的,它们之间的交互多是通过软盘(相当于现在的 U 盘)来交换数据。后来人们创造了网络,计算机之间可以相互交换信息了。
早期的计算机网络也是种类繁多,支持的协议也是五花八门。随着时间的推移,现在被广泛使用的是 IP 网络,其他类型的网络逐渐退出。当下不论是办公室内的局域网,还是互联网,使用的基本都是 IP 网络。
本章将给读者介绍有关 Python网络编程的相关知识,包括 TCP/IP 协议、Socket 接口、TCP/UDP 客户端以及服务器端的构建等。