高度なデータ送受信
クライアントプログラムのマウスの座標をサーバープログラムに送信することを考えてみましょう。
read メソッドでは1バイト分、すなわち0から255の範囲の数値しか読み込むことができません。
そのため、マウスのx座標とy座標のペアを文字列として表して送信することにしましょう。
まずはクライアントプログラムを以下のように作成します。
client5.pde
import processing.net.*;
Client myClient;
int dataIn;
void setup() {
  size(600, 600);
  myClient = new Client(this, "127.0.0.1", 5204);
}
void draw() {
}
void mouseMoved() {
  String s = "" + mouseX + ',' + mouseY + '\n';
  myClient.write(s);
}
マウスのx座標とy座標をカンマで区切り、末尾には改行文字を付けています。
サーバープログラムは以下のようになります。
server5.pde
import processing.net.*;
class Point {
  int x, y;
  Point (int x, int y) {
    this.x = x;
    this.y = y;
  }
}
Server myServer;
Point p = new Point(0, 0);
void setup() {
  size(600, 600);
  myServer = new Server(this, 5204);
}
void draw() {
  background(255);
  fill(0);
  ellipse(p.x, p.y, 10, 10);
}
void clientEvent(Client client) {
  while (client.available() > 0) {
    String[] xy = split(client.readStringUntil('\n').trim(), ',');
    p = new Point(int(xy[0]), int(xy[1]));
  }
}
サーバープログラムのウィンドウに、クライアントから受信した座標の点を描画しています。
データを文字列として受信するためには、readString メソッドか readStringUntil メソッドを使用します。
ここでは、x座標とy座標のペアが改行文字で区切られているため、readStringUntil メソッドを使用して改行文字までのデータを読み込みます。
読み込んだ文字列を処理し、グローバル変数 p に受け取った座標を代入します。
ここでは、受信データが常に正しい形式で送られてくることを前提としています。 本来は、データが正しい形式になっていない場合のエラー処理を行う必要があります。