Perpustakaan yang sangat ringan dan mudah digunakan untuk aplikasi klien-klien atau sekadar server-klien di Java melakukan semua pekerjaan untuk Anda: Pengaturan Koneksi, Rekoneksi, Batas waktu, Keep-Alive dll di latar belakang. Cukup beri tahu aplikasi apa yang harus dikirim dan diterima, dan sisanya akan terjadi dengan sendirinya. Itu hampir keajaiban!
Kualitas Kode dan Status Bangun
import java . net . Socket ;
public class MyServer extends Server {
public MyServer ( int port ) {
super ( port );
}
@ Override
public void preStart () {
registerMethod ( "SOME_MESSAGE" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
doSomethingWith ( msg );
sendReply ( socket , "Hey, thanks for your message. Greetings!" )
}
});
}
}Buat saja kelas Anda sendiri, misalnya MyServer memperluas server, cukup gunakan konstruktor asli dan terapkan metode prestart (). Dalam metode prestart cukup tambahkan
registerMethod ( "IDENTIFIER" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
doSomethingWith ( msg , socket );
sendReply ( socket , "Some Reply" );
}
});Untuk setiap pengidentifikasi datapackge yang diterima server, Anda ingin bereaksi.
Contoh: Jadi jika Anda mendaftarkan "ping" dan yang dapat dieksekusi merespons "pong" kepada klien, cukup mendaftar
registerMethod ( "PING" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
sendReply ( socket , "Pong" );
}
});Dan itu saja.
Agar pengidentifikasi lebih lanjut bereaksi, cukup masukkan garis -garis itu beberapa kali ke prestart Anda (). Jangan lupa untuk mengirim balasan kepada klien yang Anda dapatkan dari datapackge, karena mereka akan menunggu sampai dunia berakhir untuk tanggapan dari Anda.
Contoh untuk server yang menyiarkan pesan obrolan ke semua klien yang terhubung:
registerMethod ( "Message" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
System . out . println ( "[Message] New chat message arrived, delivering to all the clients..." );
broadcastMessage ( msg ); //The broadcast to all the receivers
sendReply ( socket , String . valueOf ( reveicerCount )); //The reply (NECESSARY! unless you want the client to block while waiting for this package)
}
}); import java . net . Socket ;
public class MyClient extends Client {
public MyClient ( String id , String address , int port ) {
super ( id , address , port );
registerMethod ( "SOME_MESSAGE" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
System . out . println ( "Look! I got a new message from the server: " + msg . get ( 1 ));
}
});
start (); // Do not forget to start the client!
}
}Buat saja kelas Anda sendiri, misalnya klien MyClient memperluas, cukup gunakan konstruktor asli. Setiap kali Anda siap untuk klien untuk masuk, hubungi start (). Klien akan terhubung ke server tergantung pada konstruktor-parameter dan mendaftar sendiri di server. Mulai sekarang dapat menerima pesan dari server dan tetap terhubung (dan menghubungkan kembali jika perlu) sampai Anda menelepon berhenti ().
Untuk bereaksi pada pesan yang masuk, tambahkan saja
registerMethod ( "IDENTIFIER" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
doSomethingWith ( msg , socket );
}
});Di suatu tempat, saya sarankan konstruktor itu sendiri, untuk setiap ID pesan yang ingin Anda tangani.
Exmaple untuk pesan obrolan yang masuk dari server:
registerMethod ( "PING" , new Executable () {
@ Override
public void run ( Datapackage msg , Socket socket ) {
System . out . println ( "Look! I got a new message from the server: " + msg . get ( 1 ));
// msg.get(1); should now return "Pong" in our example.
}
});Berbeda dari klien, server tidak akan mengharapkan balasan secara default. Jadi jangan selalu kirimkan paket balasan, karena dia membutuhkan metode ekstra-identitas yang terdaftar untuk itu.
Sebagai server:
Sebagai klien:
Ada beberapa penangan acara (misalnya OnconnectionGood (), OnConnectionProblem (), OnClientRegistered (...), dll.) Anda dapat menimpa untuk menangani acara ini.
Kelas klien dan server keduanya menyediakan penangan acara OnLog dan Onlogerror, yang dapat ditimpa dalam implementasi jika pesan info dan pesan kesalahan tidak boleh (hanya) output di konsol.