generated from jphacks/JP_sample
-
Notifications
You must be signed in to change notification settings - Fork 0
/
socket_open.py
52 lines (37 loc) · 1.72 KB
/
socket_open.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import pandas as pd
import socket
import time
from modules.my_socket import my_config
def speaker_change(changed_speaker):
df = pd.read_csv('modules/speaker.csv')
changed_row = df['speaker_name'] == changed_speaker
if changed_row.any():
# その行を先頭に移動させる
df = pd.concat([df[changed_row], df.drop(df[changed_row].index)])
df.to_csv('modules/speaker.csv', index=False)
print(f'スピーカーを{changed_speaker}に変更しました')
# サーバーを立てて、テキスト取得
def start_server_getString(port=my_config.RASPBERRYPI_avatar_PORT):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ポートの再利用オプションを設定
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(("0.0.0.0", port))
server_socket.listen()
print("Server started, waiting for connections...")
while True:
print("クライアントからの接続を待っています...")
# クライアントからの接続を受け入れる
client_socket, addr = server_socket.accept()
print(f"接続を受け入れました: {addr}")
# データを受信
data = client_socket.recv(1024)
data_decoded = data.decode('utf-8')
print(f"受信したデータ: {data_decoded}")
# 受信データを使用して何か処理したい場合はここで行う
speaker_change(data_decoded)
# クライアント接続のみを閉じる
client_socket.close()
# print("クライアント接続が終了しました。再度待機します。")
# このコードではserver_socket.close()を呼ばないため、
# サーバーは無限ループで開きっぱなしになります。
start_server_getString()