Processing de UDP Haberleşme

Başlatan berkay_91, 10 Eylül 2019, 12:05:05

berkay_91

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);
}




devrecii

#1
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)

taydin

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.
Timur Aydın (mekatronik.org)

SpeedyX

Çünkü String karşılaştırması == ile yapılmaz.

Şöyle yaparsan çalışır:
if (message.equals("a") == true)