Hello processing community. I am working with some people to create an interactive installation using processing, however I am having some trouble with our basic server code. So far, the client is attempting to send data through to the server, but I am getting a null pointer exception. Does anyone have any idea what is going on?
CLIENT CODE:
//NETWORK CONNECTION CODE BASED ON CODE FROM LEARNING PROCESSING, BY DANIEL SHIFFMAN
// Import the net libraries
import processing.net.*;
// Declare a client
Client client;
PImage faceImage;
boolean serverReady = false;
color pixelData;
// A String to hold whatever the server says
String messageFromServer = "";
// A String to hold what the user types
String typing ="";
void setup() {
size(640, 400);
// Create the Client, connect to server at 127.0.0.1 (localhost), port 5204
client = new Client(this, "192.168.1.103", 5204);
faceImage = loadImage("Untitled.jpg");
image(faceImage, 0, 0);
faceImage.loadPixels();
}
void draw() {
}
// Simple user keyboard input
void keyPressed() {
// If the return key is pressed, save the String and clear it
if (key == '\n') {
for (int i = 0; i < width*height; i++) {
client.write("ready");
while (serverReady == false) {
messageFromServer = client.readString();
messageFromServer = messageFromServer.trim();
if (messageFromServer == "ready") {
serverReady = true;
client.write("sending");
}
}
pixelData = faceImage.pixels[i];
println(pixelData);
client.write(pixelData);
serverReady = false;
messageFromServer = "";
}
}
}
SERVER CODE:
//NETWORK CONNECTION CODE BASED ON CODE FROM LEARNING PROCESSING, BY DANIEL SHIFFMAN
// Import the net libraries
import processing.net.*;
// Declare a server
Server server;
boolean clientReady = false;
String incomingMessage = "";
PImage recievedImage;
color pixelData;
color incomingColor;
void setup() {
size(640, 400);
// Create the Server on port 5204
server = new Server(this, 5204);
recievedImage = loadImage("test.jpg");
recievedImage.loadPixels();
}
void draw() {
Client client = server.available();
// We should only proceed if the client is not null
if (client!= null) {
for (int i = 0; i <width*height; i++) {
while (clientReady == false) {
// The message is read using readString().
incomingMessage = client.readString();
// The trim() function is used to remove the extra line break that comes in with the message.
// incomingMessage = incomingMessage.trim();
if (incomingMessage == "ready") {
client.write("ready");
clientReady=true;
}
}
while (incomingMessage == "ready") {
// The message is read using readString().
incomingMessage = client.readString();
// The trim() function is used to remove the extra line break that comes in with the message.
incomingMessage = incomingMessage.trim();
}
incomingColor = client.read();
println(incomingColor);
pixelData = incomingColor;
recievedImage.pixels[i] = pixelData;
clientReady=false;
incomingMessage = "";
}
recievedImage.loadPixels();
image(recievedImage, 0, 0);
}
}
// The serverEvent function is called whenever a new client connects.
void serverEvent(Server server, Client client) {
incomingMessage = "A new client has connected: " + client.ip();