建立Socket连接的步骤可分为客户端和服务器端两个部分,具体如下:
一、客户端建立连接的步骤
创建Socket对象 使用`socket.socket()`方法创建一个Socket实例,指定协议类型(如IPv4的`AF_INET`)和传输层协议(如TCP的`SOCK_STREAM`)。
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
```
绑定IP和端口
使用`bind()`方法将Socket绑定到指定的IP地址和端口号,绑定后Socket进入监听状态,等待客户端连接。
```python
host = '127.0.0.1' 本地主机地址
port = 9999 监听端口
s.bind((host, port))
```
监听连接
使用`listen()`方法设置最大连接数,服务器开始等待客户端请求。
```python
s.listen(5) 最多允许5个客户端排队
```
接受客户端连接
使用`accept()`方法接收客户端连接,该方法会创建一个新的Socket对象用于与客户端通信。
```python
client_socket, addr = s.accept()
print(f"连接来自: {addr}")
```
数据传输
通过`sendall()`或`recv()`方法进行数据发送和接收。
```python
发送数据
client_socket.sendall(b'Hello, world')
接收数据
data = client_socket.recv(1024).decode()
print(f"收到消息: {data}")
```
关闭连接
通信完成后,使用`close()`方法关闭Socket连接。
```python
client_socket.close()
s.close()
```
二、服务器端建立连接的步骤
创建Socket对象
与客户端相同,创建指定协议和传输层的Socket实例。
```python
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
```
绑定IP和端口
指定服务器IP和端口号,并绑定Socket。
```python
host = '0.0.0.0' 监听所有接口
port = 8888
server_socket.bind((host, port))
```
监听连接
设置最大连接数并进入监听状态。
```python
server_socket.listen(5)
print("服务器正在监听端口8888...")
```
接受客户端连接
使用`accept()`方法接收客户端连接,为每个连接创建新线程处理。
```python
while True:
client_socket, addr = server_socket.accept()
print(f"新连接来自: {addr}")
处理连接...
```
数据传输
通过`recv()`接收客户端数据,并使用`send()`发送响应。
```python
data = client_socket.recv(1024).decode()
print(f"收到消息: {data}")
client_socket.send(b"响应内容")
```
关闭连接
完成通信后关闭客户端Socket,服务器可继续监听其他连接。
注意事项
IP地址选择: 绑定`127.0.0.1`(localhost)仅限本地通信,若需远程连接需使用服务器实际IP。 端口冲突
异常处理:实际应用中需添加错误处理机制,如绑定失败、连接中断等。
通过以上步骤,客户端和服务器即可建立稳定的网络连接,实现双向通信。