编程实现遥控小汽车|青训营

113 阅读4分钟

1. 计算机网络编程技术

计算机网络编程技术是指通过编程来实现计算机网络中的通信和数据交换。这种技术涉及到在不同计算机之间建立通信通道,以便它们可以在网络上相互发送数据、交换信息和进行协作。计算机网络编程技术通常使用一些编程接口和库函数来实现网络通信,其中最常用的是Socket编程。

以下是计算机网络编程技术的一些关键点:

  1. Socket编程: Socket是一种用于网络通信的编程接口,允许不同计算机之间的进程通过网络传输数据。通过Socket编程,可以创建、连接、传输和接收数据,实现进程之间的通信。
  2. 协议: 计算机网络通信依赖于各种协议,如TCP(传输控制协议)、UDP(用户数据报协议)、IP(互联网协议)等。编程技术需要遵循这些协议规定的通信方式和数据格式。
  3. 服务器-客户端模型: 许多网络应用都遵循服务器-客户端模型,其中服务器提供某种服务,而客户端请求并接收服务。编程技术用于在服务器和客户端之间建立连接、传输数据和处理请求。
  4. 并发和多线程: 计算机网络中可能有多个客户端同时与服务器通信。为了实现并发处理,网络编程技术需要涉及多线程或异步编程,以便能够同时处理多个连接和请求。
  5. 数据格式和编解码: 在网络通信中,数据需要以特定的格式进行传输。网络编程技术涉及数据的编码(将数据转换为适合传输的格式)和解码(将接收到的数据还原为原始格式)过程。
  6. 网络安全: 网络编程技术需要考虑安全性,包括加密通信、身份验证和防止网络攻击等方面。
  7. 网络库和框架: 许多编程语言提供了专门的网络库和框架,用于简化网络编程过程。这些库提供了高级的函数和工具,使网络通信更容易实现。
  8. 实时通信: 一些应用需要实时性高的通信,如视频通话、实时聊天等。网络编程技术需要处理低延迟和高并发的要求。

2.socket编程

在Socket编程中,有两种主要类型的Socket:

  1. 流式Socket(TCP Socket): 这种类型的Socket基于TCP(传输控制协议)实现,它提供可靠的、面向连接的通信。流式Socket的通信过程类似于两台计算机之间建立了一个双向的、可靠的通信管道,数据通过这个管道按顺序传输,保证数据的完整性和可靠性。流式Socket通常用于需要稳定传输和数据顺序的应用,如网页浏览、文件传输等。
  2. 数据报Socket(UDP Socket): 这种类型的Socket基于UDP(用户数据报协议)实现,它提供无连接的通信。数据报Socket将数据划分为小的数据包,每个数据包都独立发送,不保证数据包的顺序和完整性。数据报Socket通常用于实时性要求较高的应用,如在线游戏、实时视频传输等。

3.socket编程的流程

  1. 创建Socket:使用编程语言提供的Socket库函数,创建一个Socket,并指定通信协议(TCP或UDP)。
  2. 绑定Socket:为Socket分配一个本地IP地址和端口号。
  3. 监听连接请求(仅适用于TCP):如果使用TCP Socket,需要将Socket设置为监听状态,等待其他计算机发起连接请求。
  4. 建立连接(仅适用于TCP):当其他计算机发起连接请求时,接受连接请求,建立一个连接。
  5. 发送和接收数据:使用Socket提供的发送和接收函数,在连接上传输数据。
  6. 关闭连接:当通信完成时,关闭连接,释放资源。

4.编程实战

使用主机控制遥控小车

c = socket.socket()
c.connect((IP, PORT))
...

def on_press(key):
    ...
def on_release(key):
    c.send(STOP.encode('utf-8'))

Controller()
with Listener(on_press=on_press, on_release=on_release) as listener:
    _ = listener.join()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((IP, PORT))
s.listen(1)
conn, address = s.accept() 
print('Connected by', address)  
...
conn.recv(1024)
while True:
    recv_byte = conn.recv(1024) 
  
    ...