teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容を一つにしました。

2020/09/08 23:49

投稿

mkoban777
mkoban777

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- Processingでサーバークライアント通信をしたい
1
+ Processingでサーバークライアント間のデータ通信をしたい
body CHANGED
@@ -2,7 +2,7 @@
2
2
  初めてのプロセッシングという書籍の19章を参考にしていますが、そのままサンプルコードを使ってもうまくいきません。
3
3
  processingのバージョンは3.5.4、windows10にて実行しています。
4
4
 
5
- ### 質問
5
+ ### 質問
6
6
  互いの画面にellipseでお絵描きするプログラムを実行してみましたが、なぜか相手から送信された座標にellipseを描くことができません。
7
7
  クライアントプログラムのvoid clientEvent(Client client) 内のellipse(vals[0], vals[1], 16, 16);が機能しないのはなぜでしょうか。
8
8
  試しにvoid draw内にellipse(vals[0], vals[1], 16, 16);を入れてみるとうまくいくのですが、その理由がわかりません。
@@ -65,39 +65,4 @@
65
65
  client.write(out);
66
66
  println("Sending: " + out);
67
67
  }
68
- ```
68
+ ```
69
-
70
- ### 質問2
71
- そのほかにも「初めてのプロセッシング」に掲載されているソースそのまま使うとデータの送受信でデータの値がおかしくなります。
72
- 受け取りの処理にString in = client.readString();を使うとうまくいきましたが、下の元のソースのなにが原因なのかわかりません。
73
-
74
- 受信データがおかしくなるクライアント側プログラム
75
- ```
76
- import processing.net.*;
77
- Client client;
78
- void setup() {
79
- size(200, 200);
80
- client = new Client(this, "127.0.0.1", 5204);
81
- background(255);
82
-  fill(0, 100);
83
- noStroke();
84
- }
85
- void draw() {
86
- }
87
- void clientEvent(Client client) {
88
- String in = client.readStringUntil('\n');
89
- if (in != null) {
90
- println( "Receiving:" + in);
91
- int[] vals = int(splitTokens(in, ",\n"));
92
- ellipse(vals[0], vals[1], 16, 16);
93
- }
94
- }
95
- void mouseDragged() {
96
- String out = mouseX + "," + mouseY + "\n" ;
97
- ellipse(mouseX, mouseY, 16, 16);
98
- client.write(out);
99
- println("Sending: " + out);
100
- }
101
- ```
102
- ### 質問3
103
- ネットワーク関連のプログラミングを基礎から学べるような書籍やサイトがあれば教えていただけると幸いです。