Chat Applet

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
Chat Applet
Toplam üç sınıfımızdan biri olan chat appleti, tek grafik arayüzüne sahip sınıftır. Bu yüzden java.applet paketinin yanında java.awt sınıf paketininide kullanması gerekiyor.


import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;

public class chatapplet extends Applet implements Runnable
{
...
}


Chat Applet sınıfı Applet sınıfını miras alır ve Thread kullanır.


public static final int PORT = 8888;
Socket socket;
DataInputStream in;
PrintStream out;
TextField inputfield;
TextArea outputarea;
Thread thread;


PORT, socket, in und out chatserver ve baglanti da açıklanan ile aynı anlamı taşır. inputfield giriş nesnesini outputarea ise çıkış nesnesini tutuyor. thread kendine ait Thread 'i saklıyor.


public **** init()
{
inputfield = new TextField();
outputarea = new TextArea();
outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
outputarea.setEditable(false);

this.setLayout(new BorderLayout());
this.add("South", inputfield);
this.add("Center", outputarea);
this.setBackground(Color.lightGray);
this.setForeground(Color.black);
inputfield.setBackground(Color.white);
outputarea.setBackground(Color.white);
}


Init metodunda grafik arayüz hazırlanıyor. Giriş sahası (Textfield) ve çıkış sahası (Textarea) oluşturulup, giriş sahası aşağıya gelecek şekilde yerleştiriliyor. Bunun akabinde renkler belirleniyor.

public **** start()
{
try
{
socket = new Socket(this.getCodeBase().getHost(), PORT);
in = new DataInputStream(socket.getInputStream());
out = new PrintStream(socket.getOutputStream());
} catch (IOException e)
{
this.showStatus(e.toString());
say("Server ile bağlantı kurulamadı!");
System.exit(1);
}

say("Server ile bağlantı kuruldu...");

if (thread == null)
{
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}


Start metodunda applet server ile bağlantı kurulmaya çalışılıyor. Gerekli olan server adresi HTML dökümanı tarafından belirleniyor. Bu da daima HTML dökümanın bulunduğu serverın adresidir. Başka serverlar ile bağlantıya izin verilmediği için, başka server olmasınında hiç bir anlamı yok. Hata oluşursa veya bağlantı kurulursa, sonuç bir mesaj ile kullanıcıya bildiriliyor. Bundan sonra kendi thread 'ini oluşturup başlatıyor.

public **** stop()
{
try
{
socket.close();
} catch (IOException e)
{
this.showStatus(e.toString());
}

if ((thread !=null) && thread.isAlive())
{
thread.stop();
thread = null;
}
}


Stop Metodu browser tarafıdan, kullanıcı sayfayı terk ettiği zaman otomatik olarak çağrılır. Socket kapatılıyor ve thread durduruluyor.

public **** run()
{
String satir;

try
{
while(true)
{
satir = in.readLine();
if(satir!=null)
outputarea.appendText(satir+'
' );
}
} catch (IOException e) { say("Server ile bağlantı kesildi."); }
}


run metodunda sonsuz bir dögü içinde giriş sahasından girilen mesajlar, çıkış sahasında gösteriliyor.

public boolean action(Event e, Object what)
{
if (e.target==inputfield)
{
String inp=(String) e.arg;
out.println(inp);
inputfield.setText("");
return true;
}
return false;
}


Event Metodu kullanıcı giriş yaptığında aktif olur. Kullanıcının giriş sahasına girip girmediğini kontrol ediyoruz. Bu taktirde girileni alıp servera gönderiyoruz. Giriş sahasını tekrar boşaltıyoruz.

public **** say(String msg)
{
outputarea.appendText("*** "+msg+" ***
");
}


Say Metodu girilen mesajı başına ve sonuna yıldız ekleyerek gösteriyor.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.