Merhaba, 2 farklı Laptopda UDP Protokolü ile Processing de çalışan programları Haberleştirmek istiyorum, server üzerinden klavyede bastığım karakterleri göndermeme rağmen Client ta gelen veri 'a' olduğunda if in içine girmiyor...
// Server
import hypermedia.net.*;
UDP udp; // define the UDP object
void setup() {
udp = new UDP( this, 6000 );
udp.listen( true );
}
void draw() {
}
void keyPressed() {
String message = str( key );
String ip = "192.168.0.105";
int port = 6000;
udp.send( message, ip, port );
}
//Client
import hypermedia.net.*;
UDP udp; // define the UDP object
void setup() {
udp = new UDP( this, 6000 );
udp.listen( true );
size(400,400);
}
void draw() {
}
void receive( byte[] data ) {
String message = new String( data );
if(message=="a")
exit();
println( "receive: " + message);
}
(https://ibb.co/cCDmkz1)
Belki a nın yaında \r\n (enter) geliyor olabilir yada başka şey o nedenle stringin sadece ilk harfini kontrol et , yada gelen verirn tamamını tek tek kotrol et "a" varmı diye (udp olduğu için)
UDP protokolünde, gönderici hiçbir zaman verinin alıcıya ulaşıp ulaşmadığını tespit edemez. Nadir de olsa mutlaka veri kaybı olacaktır.
Sizin koddaki problem bu değil muhtemelen, ama yapacağınız haberleşme protokolünde bu durumu da gözününde bulundurmanız lazım.
Çünkü String karşılaştırması == ile yapılmaz.
Şöyle yaparsan çalışır:
if (message.equals("a") == true)
teşekkürler