怎么发送和接收不定长的字符串
时间: 2023-09-26 19:11:17 浏览: 43
发送不定长字符串的一种常用方法是使用分隔符来区分不同的数据。例如,在发送字符串前,先发送一个长度标识符,用于表示字符串的长度,然后再发送字符串本身。接收方在接收到长度标识符后,就可以知道后面要接收的字符串长度,并按照该长度接收字符串。另外,也可以在字符串末尾添加一个特定的结束标记,例如'\0',来表示字符串的结束。
以下是一个例子,用于发送和接收不定长字符串:
发送方:
```python
import socket
# 连接服务器
server_address = ('localhost', 10000)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(server_address)
# 发送字符串
data = 'hello world'
length = len(data)
msg = f'{length}|{data}'
sock.sendall(msg.encode())
# 关闭连接
sock.close()
```
接收方:
```python
import socket
# 启动服务器
server_address = ('localhost', 10000)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(server_address)
sock.listen(1)
# 接收连接
print('等待连接...')
conn, client_address = sock.accept()
# 接收字符串
data = ''
while True:
chunk = conn.recv(1024).decode()
data += chunk
if '|' in data:
break
length, rest = data.split('|', 1)
length = int(length)
while len(rest) < length:
chunk = conn.recv(1024).decode()
rest += chunk
msg = rest[:length]
print(f'接收到的字符串为: {msg}')
# 关闭连接
conn.close()
```