質問編集履歴

3

受信のところを最新版にしました

2022/12/12 09:13

投稿

Ayatakamaru
Ayatakamaru

スコア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
- try:
40
+ try:
42
- sock.send(signal.encode("utf-8"))
41
+ sock.send(signal.encode("utf-8"))
43
- data = sock.recv(1024)
42
+ data = sock.recv(4096)
44
- time.sleep(2)
43
+ time.sleep(2)
45
- print(data)
44
+ print(data)
45
+
46
- except ConnectionResetError:
46
+ except ConnectionResetError:
47
- break
47
+ pass
48
- sock.shutdown(socket.SHUT_RDWR)
49
- sock.close()
50
48
 
51
49
  while True:
52
50
  signal=input("signal=")

2

スレッドを増やしました

2022/12/12 08:48

投稿

Ayatakamaru
Ayatakamaru

スコア3

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

質問のタイトルと実現したいことをわかりやすくしました

2022/12/09 09:17

投稿

Ayatakamaru
Ayatakamaru

スコア3

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
  ```