GitHub
Soket Programala ile Chat uygulaması yapımı
Kaynak kodlarına direk yukarıda ki Github linki üzerinden ulaşabilirsiniz.
Uygulamanın görselleri
Client(istemci)
Server(Sunucu)
Server Sınıfı
static ServerSocket ss;
static Socket s;
static DataInputStream dis;
static DataOutputStream dos;
Tanımlanan
kütüphanelerden üretilen nesneler.
String msjin ="";
try{
ss =new ServerSocket(1201);
s=ss.accept();
dis=new DataInputStream(s.getInputStream());
dos =new DataOutputStream(s.getOutputStream());
while(!msjin.equals("-cık"))
{
msjin=dis.readUTF();
textArea.setText(textArea.getText().trim()+"\n Client: \n"+msjin);
}
}catch(Exception e){
JOptionPane.showMessageDialog(parent,
"Bağlantı kurulmadı veya koptu!",
"Uyarı",
JOptionPane.WARNING_MESSAGE);
}
Try Catch Yapısı ile Sunucunun
İstemci ile aralarında ki bağlantının olup olmadığı kontrol edilip kullanıcıya
bildiriliyor.
Try yapısı içerisinde
Port dinleniyor, bağlantı kuruluyor input ve output kütüphanelerinden üretilen
nesnelerin nere ile bağlantı kuracakları gösteriliyor.
while döngüsü içerisine
İstemci tarafından ‘-cık’ string’i gelmiyorsa giriyor ve burdada data input
stream kütüphanesinden üretilen dis.readUTF tarafından okunan string TextArea
ya bastırılıyor.
Eğer bağlantı kurulamaz ise Catch’e
düşüyor ve burda da kullanıcıya hata mesajı veriliyor.
Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String msjout="";
try{
msjout=textField.getText().trim();
dos.writeUTF(msjout);
textArea.setText(textArea.getText().trim()+"\nServer: \n"+msjout);
textField.setText("");
}catch(Exception e1){
JOptionPane.showMessageDialog(parent,
"Mesaj gönderilemedi",
"Uyarı",
JOptionPane.WARNING_MESSAGE);
}
}
});
Butonun nesnesinin
içerisinde ki actionPerformed methodu ile Textfield da ki mesaj istemciye
gönderiliyor.
Burada Try Catch yapısı
ile kontrolden geçiyor mesaj eğer gönderilememiş ise Catch yapısına düşüyor.
data output stream ile writeUTF fonksiyonuna gönderilen string istemciye
gönderiliyor. Ve kendi text area’sınada kendi gönderdiği stringi yazıyor.
İstemci
String msjin="";
try{ //ilk paremetre ip 2. paremetre port
s=new Socket("127.0.0.1",1201);
dis =new DataInputStream(s.getInputStream());
dos =new DataOutputStream(s.getOutputStream());
while(!msjin.equals("-cık")){
msjin=dis.readUTF();
textArea.setText(textArea.getText().trim()+"\n Server: \n"+msjin);
}
}catch(Exception e){
JOptionPane.showMessageDialog(parent,
"Bağlantı kurulmadı veya koptu!",
"Uyarı",
JOptionPane.WARNING_MESSAGE);
}
Sunucuda olduğu gibi
burada da aynı durum oluyor farklı olan kışım sadece İstemci portu dinlemiyor
hangi porta ve ip numarasına iletişim kuracağını Socket nesne ile belirliyor.
While döngüsü ve Catch
yapısı sunucu da yazılan kodlar ile birebir
aynı çalışıyor.
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String msjout="";
try{
msjout=textField.getText().trim();
dos.writeUTF(msjout);
textArea.setText(textArea.getText().trim()+"\n Client: \n"+msjout);
textField.setText("");
}catch(Exception e1){
JOptionPane.showMessageDialog(parent,
"Mesaj gönderilemedi",
"Uyarı",
JOptionPane.WARNING_MESSAGE);
}
}
});
Hiç yorum yok:
Yorum Gönder