質問編集履歴
3
受信のところを最新版にしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -37,16 +37,14 @@
|
|
37
37
|
sock_sv.listen(3)
|
38
38
|
|
39
39
|
def recv_client(sock, addr):
|
40
|
-
while True:
|
41
|
-
|
40
|
+
try:
|
42
|
-
|
41
|
+
sock.send(signal.encode("utf-8"))
|
43
|
-
|
42
|
+
data = sock.recv(4096)
|
44
|
-
|
43
|
+
time.sleep(2)
|
45
|
-
|
44
|
+
print(data)
|
45
|
+
|
46
|
-
|
46
|
+
except ConnectionResetError:
|
47
|
-
|
47
|
+
pass
|
48
|
-
sock.shutdown(socket.SHUT_RDWR)
|
49
|
-
sock.close()
|
50
48
|
|
51
49
|
while True:
|
52
50
|
signal=input("signal=")
|
2
スレッドを増やしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -35,7 +35,6 @@
|
|
35
35
|
sock_sv = socket.socket(socket.AF_INET)
|
36
36
|
sock_sv.bind((IPADDR, PORT))
|
37
37
|
sock_sv.listen(3)
|
38
|
-
signal=input(">>")
|
39
38
|
|
40
39
|
def recv_client(sock, addr):
|
41
40
|
while True:
|
@@ -43,16 +42,31 @@
|
|
43
42
|
sock.send(signal.encode("utf-8"))
|
44
43
|
data = sock.recv(1024)
|
45
44
|
time.sleep(2)
|
46
|
-
print(data
|
45
|
+
print(data)
|
47
46
|
except ConnectionResetError:
|
48
47
|
break
|
49
48
|
sock.shutdown(socket.SHUT_RDWR)
|
50
49
|
sock.close()
|
51
50
|
|
52
51
|
while True:
|
52
|
+
signal=input("signal=")
|
53
|
+
|
53
|
-
sock_cl, addr = sock_sv.accept()
|
54
|
+
sock_cl1, addr1 = sock_sv.accept()
|
55
|
+
sock_cl2, addr2 = sock_sv.accept()
|
56
|
+
sock_cl3, addr3 = sock_sv.accept()
|
57
|
+
|
54
|
-
thread = threading.Thread(target=recv_client, args=(sock_cl, addr))
|
58
|
+
thread1 = threading.Thread(target=recv_client, args=(sock_cl1, addr1))
|
59
|
+
thread2 = threading.Thread(target=recv_client, args=(sock_cl2, addr2))
|
60
|
+
thread3 = threading.Thread(target=recv_client, args=(sock_cl3, addr3))
|
61
|
+
# スレッド処理開始
|
55
|
-
thread.start()
|
62
|
+
thread1.start()
|
63
|
+
thread2.start()
|
64
|
+
thread3.start()
|
65
|
+
#スレッド終了待ち合わせ
|
66
|
+
thread1.join()
|
67
|
+
thread2.join()
|
68
|
+
thread3.join()
|
69
|
+
|
56
70
|
```
|
57
71
|
クライアント側
|
58
72
|
```python
|
@@ -94,6 +108,7 @@
|
|
94
108
|
tok = msg.split(',')
|
95
109
|
S_data=tok[1]+","+tok[2]+","+tok[4]
|
96
110
|
S_data=str(S_data)
|
111
|
+
S_data=S_data+"signal= "+str(signal)
|
97
112
|
sock.send(S_data.encode("utf-8"))
|
98
113
|
|
99
114
|
else:
|
1
質問のタイトルと実現したいことをわかりやすくしました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
初質問です pythonでのsocket通信に
|
1
|
+
初質問です pythonでのsocket通信でクライアントを同時に処理開始させたい
|
test
CHANGED
@@ -5,14 +5,15 @@
|
|
5
5
|
|
6
6
|
### 実現したいこと
|
7
7
|
実現したことしては
|
8
|
-
任意の数字(メッセージ)をサーバー側で入力する
|
9
|
-
サーバーがクライアントに3台同時にメッセージを送信する
|
10
|
-
クライアント側がメッセージを受取り処理を開始して、
|
11
|
-
結果をサーバーに送信
|
12
|
-
サーバーでメッセージを受取り、数字を入れなおす
|
13
|
-
といったシステムをループさせたいです
|
14
8
|
|
9
|
+
1) サーバで値を入力する。
|
10
|
+
2)3台のクライアントに同じ値を同時に送信
|
11
|
+
3) 3台のクライアントで処理を実施。
|
12
|
+
4) すべての結果を収集。
|
13
|
+
5) 1に戻る
|
14
|
+
|
15
|
-
最終的には、PC(サーバー)からの指令が来るたびにラズパイ(クライアント)が同時にプログラムを実行し
|
15
|
+
最終的には、PC(サーバー)からの指令が来るたびにラズパイ(クライアント)が同時にプログラムを実行し
|
16
|
+
実行結果をサーバに返したいです
|
16
17
|
### 発生している問題・エラーメッセージ
|
17
18
|
|
18
19
|
```
|