@skate
Aslında bizim ki "fixed length messaging" gibi değil de diğer bahsettiğin "seperated"'a daya uygun gibi. Mesela mesajları için şöyle bir yapı kurduk:
Register Message : R[user name]
Broadcast Message : B[sender];[Message]
Private Message : P[sender];[receiver];[Message]
UserList Request : L[sender]
Disconnect Message: D[sender]
Whois Message : W[sender];[target]
Örnek:
Pomer;skate;selam naber?Gönderirken de:
private void sendMessage(String message)
{
byte[] buf = message.getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, m_serverAddress, m_serverPort);
.
.
}
şeklinde gönderdik. Her mesaj için "buf.length"'e göre gönderdiğimizden her seferinde 1024 yada 2048 byte göndermedik. Ama Server'dan alırken, kaç byte geleceğini bilmediğimizden gelen mesajları direk 1024'lük bir buffer'a yazdık. Ama Server'da gelen mesajlar için tanımlı buffer boyutunun (aşmadığımız sürece) bir sorun çıkarmayacağını düşünüyorum, yani sonuçta 10 byte geliyorsa, biz onu 1024'lük bir buffer'a yazıyorsak bunun trafiği etkilememesi lazım.
Yukardaki mesaj yapılarında da görüldüğü gibi mesaj kısımları ";" ile ayırdık. Aynen söylediğin gibi bir Clien'te mesajı paketle, sonra Server'da o mesajı yorumla ve gerekeni yap, sonra tekrar ";" ile birleştir git gide arap saçına dönüyor işler. Mesaj yapıları da değişirse, hem Client hem Server'da bir çok yerde kodları değiştirmek gerekiyor.
@deniz
Skate ile sayende artık kullanabileceğimiz bir sürü yöntem oldu
. Benim okuduklarımdan karar verdiğim, ortak mesajları bir class'a toplamak. Farklı özellik gösteren mesajlar içinse her biri için ayrı class yapmak. Sonra bunları serialize-deserialize ile gönderip almak. Başlarına gelen overhead'i önemsememek. şuan için çok profosyonel işlerle uğraşmadığımızdan, özellikle vakit sıkıntısı olduğundan mesajlar bir şekilde gitsin ve kodlamada çok arap saçı olmasın kafi
... Mina'yi sonraki projelerde kullanmayı deneyeceğiz.
Bu arada sırada RMI, Corba ile ilgili ödevler var. En son da Raknet ve C++ ile bir uygulama daha geliyor. Yeni sorulara hazırlıklı olun