在设备端进行Socket编程,通常需要遵循以下步骤:
创建Socket
使用`socket()`函数创建一个Socket对象。这个函数通常需要三个参数:协议族(如`AF_INET`表示IPv4)、Socket类型(如`SOCK_STREAM`表示TCP)和协议编号(通常为0,表示使用默认协议)。
绑定Socket
如果需要,使用`bind()`函数将Socket绑定到指定的IP地址和端口。这一步骤是可选的,如果不绑定,操作系统会自动为Socket分配一个可用的端口。
监听连接请求
对于服务器端程序,使用`listen()`函数开始监听指定端口上的连接请求。这一步骤是可选的,仅用于服务器程序。
接受连接请求
对于服务器端程序,使用`accept()`函数接受客户端的连接请求,并创建一个新的Socket与客户端建立连接。这一步骤是阻塞的,直到有新的连接请求到达。
发起连接
对于客户端程序,使用`connect()`函数向服务器发起连接请求。该函数接受服务器的IP地址和端口号作为参数。
数据传输
成功建立连接后,可以使用`send()`函数发送数据,使用`recv()`函数接收数据。数据的传输可以是单向的,也可以是双向的。
关闭连接
通过调用`close()`函数关闭Socket连接。在双向通信中,通常需要双方同时关闭连接。
服务器端代码示例:
```python
import socket
创建Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定地址和端口
server_socket.bind(('127.0.0.1', 8888))
开始监听,参数5表示最大连接数
server_socket.listen(5)
print(f"服务器正在监听端口{8888}...")
while True:
等待客户端连接
client_socket, addr = server_socket.accept()
print(f'有电话来了,来自:{addr}')
接收客户端消息
data = client_socket.recv(1024).decode()
print(f'客人说:{data}')
回复客户端
client_socket.send('收到啦!'.encode())
client_socket.close()
```
客户端代码示例:
```python
import socket
创建Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
连接服务器
client_socket.connect(('127.0.0.1', 8888))
发送消息
msg = '你好啊,客户端!'
client_socket.send(msg.encode('utf-8'))
接收服务器消息
data = client_socket.recv(1024)
print(data.decode())
关闭连接
client_socket.close()
```
这个示例展示了如何在设备端进行基本的TCP Socket编程,包括创建Socket、绑定地址和端口、监听连接请求、接受连接请求、发起连接、数据传输和关闭连接。根据具体需求,可以在此基础上进行扩展和修改。