57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
import socket
|
|
import numpy as np
|
|
import time
|
|
|
|
# 设置服务端IP和端口
|
|
HOST = '0.0.0.0' # 监听所有网络接口
|
|
PORT = 12345 # 端口号
|
|
|
|
|
|
def generate_data(sample_rate=96000, duration=1):
|
|
"""生成模拟的采样数据"""
|
|
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)
|
|
# 使用正弦波生成模拟数据,可以替换为其他类型的数据
|
|
data = np.sin(2 * np.pi * 1000 * t) # 1kHz 正弦波
|
|
return data.astype(np.float32)
|
|
|
|
|
|
def start_server():
|
|
"""启动socket服务端"""
|
|
# 创建socket对象
|
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
server_socket.bind((HOST, PORT))
|
|
server_socket.listen(1)
|
|
print(f"服务器启动,等待客户端连接...")
|
|
|
|
# 等待客户端连接
|
|
client_socket, client_address = server_socket.accept()
|
|
print(f"客户端 {client_address} 已连接")
|
|
|
|
try:
|
|
while True:
|
|
# 生成96k采样的数据
|
|
data = generate_data(sample_rate=96000, duration=1) # 生成 1 秒钟的采样数据
|
|
# 将数据转换为字节流
|
|
data_bytes = data.tobytes()
|
|
|
|
# 发送数据
|
|
client_socket.sendall(data_bytes)
|
|
print("发送数据给客户端...")
|
|
|
|
|
|
# 等待 1 秒后再发送下一组数据
|
|
time.sleep(1)
|
|
|
|
except Exception as e:
|
|
print(f"发生错误: {e}")
|
|
|
|
finally:
|
|
# 关闭连接
|
|
client_socket.close()
|
|
server_socket.close()
|
|
print("连接已关闭")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
start_server()
|