JavaScript (IE) Puzzle

javascript puzzle link

Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) Tcp.Net hosting program

HostProgram.exe dosyanızın yanında “dllpool” isimli bir klasör oluşturun.
(Create “dllpool” directory in HostProgram.exe current directory)

HostProgram.exe programınızı çalıştırdığınız zaman otomatik olarak “dllpool” klasöründeki
dosyaları bulunduğu klasöre kopyalar programı restart edip dll’i host eder.
(when starting HostProgram.exe automatic copy “dll” files in “dllpool” directory to HostProgram.exe file current directory and HostProgram.exe to be restart)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Security;
using System.Net;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Collections;
using System.Diagnostics;

namespace HostProgram
{
    public class HostProgram
    {
        private ArrayList arys = new ArrayList();
        private string path = “”;
        public HostProgram()
        {
            try
            {
                Console.WriteLine(”Please wait… 8 seconds”);
                Thread.Sleep(8000);
                path = Environment.CurrentDirectory + “\\dllpool”;
                copyFiles();
                FileSystemWatcher watcher = new FileSystemWatcher(path);
                watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
                watcher.Changed += new FileSystemEventHandler(watcher_Changed);
                watcher.Created += new FileSystemEventHandler(watcher_Created);
                watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
                watcher.EnableRaisingEvents = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        void watcher_Deleted(object sender, FileSystemEventArgs e)
        {
            restart();
        }

        void watcher_Created(object sender, FileSystemEventArgs e)
        {
            restart();
        }

        void watcher_Changed(object sender, FileSystemEventArgs e)
        {
            restart();
        }

        void watcher_Renamed(object sender, RenamedEventArgs e)
        {
            restart();
        }
        public void restart()
        {
            ProcessStartInfo psi = new ProcessStartInfo(”HostProgram.exe”);
            psi.WorkingDirectory = Environment.CurrentDirectory;
            try
            {
                System.Diagnostics.Process.Start(psi);
                Environment.Exit(0);
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.ToString());
            }
        }
        public void copyFiles()
        {
            try
            {
                DirectoryInfo df = new DirectoryInfo(path);
                FileInfo[] fi = df.GetFiles();
                foreach (FileInfo f in fi)
                {
                    FileInfo cpy = f.CopyTo(f.Directory.Parent.FullName + “\\” + f.Name, true);
                    startHost(cpy);
                }
                Console.WriteLine(”Services Started”);
            }
            catch (Exception ex)
            {
                Console.WriteLine(”ERROR : [" + ex.Message + "]“);
            }
        }
        public void startHost(FileInfo fi)
        {
            try
            {
                Assembly assembly = Assembly.LoadFile(fi.FullName);
                Console.WriteLine(”\nDLL Loaded : ” + assembly.GetName().Name);
                Type[] types = assembly.GetTypes();
                foreach (Type type in types)
                {
                    if (type.IsClass)
                    {
                        bool status = false;
                        Type[] typesI = type.GetInterfaces();
                        foreach (Type typeI in typesI)
                        {
                            Attribute[] attrs = Attribute.GetCustomAttributes(typeI);
                            foreach (Attribute attr in attrs)
                            {
                                if (attr.GetType().Name.Equals(”ServiceContractAttribute”))
                                {
                                    Uri[] uris = { new Uri(”http://localhost:8732/serdarturkel/” + type.Name) };
                                    startServices(type, typeI, uris);
                                    status = true;
                                    break;
                                }
                                if (status) break;
                            }
                            if (status) break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(”\n” + ex.Message + ” : Not loaded ” + fi.Name);
            }
        }
        public void startServices(Type typ, Type endpoint, Uri[] uris)
        {
            try
            {
                Console.WriteLine(”Starting services ” + typ.Name + ” , please wait”);
                ServiceHost host = new ServiceHost(typ, uris);
                ServiceCredentials credentials = host.Credentials;
                credentials.WindowsAuthentication.AllowAnonymousLogons = false;
                credentials.UserNameAuthentication.UserNamePasswordValidationMode =
                    UserNamePasswordValidationMode.Windows;

 

                ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
                behavior.HttpGetEnabled = true;
                host.Description.Behaviors.Add(behavior);

                WSHttpBinding binding = new WSHttpBinding(SecurityMode.TransportWithMessageCredential);
                binding.Security.Mode = SecurityMode.Message;

                host.AddServiceEndpoint(endpoint, binding, uris[0]);
                using (ServiceHost serviceHost = new ServiceHost(typ))
                {
                    host.Open();
                    Console.WriteLine(”The service is ready : ” + typ.Name + ” / ” + endpoint);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(”not started services : ” + typ.Name + ” / ” + e.Message);
            }
        }
        static void Main(string[] args)
        {
            new HostProgram();
            Console.ReadKey();
        }
    }
}

C# ASP.NET – Netbeans Web Services Integration

C# ASP.NET – Netbeans Web Services Integration video link



Download Lib.jar file

C# XML Serialization

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.IO;

namespace XMLSerialize
{

public class XMLSerialize
{
public static void Main(String[] args)
{
Personal person = new Personal();
person.PersonalID = “1″;
person.PersonalName = “serdar türkel”;
person.Age = 27;
try
{
XMLSerialize xs = new XMLSerialize();
string rest = xs.SerializeObject(person);
Console.WriteLine(rest);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
public String SerializeObject(Object serializeObject)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(Personal));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, serializeObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
string xmlSerializedString = UTF8ByteArrayToString(memoryStream.ToArray());
return xmlSerializedString;
}
public Object DeserializeObject(String xmlSerializedString)
{
XmlSerializer xs = new XmlSerializer(typeof(Personal));
MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(xmlSerializedString));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return xs.Deserialize(memoryStream);
}
private String UTF8ByteArrayToString(Byte[] characters)
{
UTF8Encoding encoding = new UTF8Encoding();
String constructedString = encoding.GetString(characters);
return constructedString;
}
private Byte[] StringToUTF8ByteArray(String xmlSerializedString)
{
UTF8Encoding encoding = new UTF8Encoding();
Byte[] byteArray = encoding.GetBytes(xmlSerializedString);
return byteArray;
}
}

[XmlRootAttribute(ElementName = "Personal", IsNullable = false)]
public class Personal
{
[XmlAttribute(AttributeName = "PersonalID")]
public string PersonalID
{
get;
set;

}

[XmlElement(ElementName = "PersonalName")]
public String PersonalName
{
get;
set;

}
[XmlElement(ElementName = "Age")]
public int Age
{
get;
set;

}

}

}

Java XML Serialization

Java XML Serialization için bir örnek

import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name=”XmlClass“)
public class XmlClass {
@XmlElement(name=”XmlNode“)
public String XmlNode=”xml node“;

public SubNode SubNodeObject=new SubNode();

public static void main(String args[]){
try{
XmlClass serializer=new XmlClass();
JAXBContext context = JAXBContext.newInstance(serializer.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter xmlInfo=new StringWriter();
marshaller.marshal(serializer,xmlInfo);
System.out.println(xmlInfo);
}
catch(Exception
ex){
ex.printStackTrace();
}
}

}
@XmlRootElement(name=”SubXmlClass“)
public class SubNode{
@XmlElement(name=”SubXmlNode“)
public String XmlNode=”sub xml node“;
}

Kod çıktısı

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<XmlClass>
<XmlNode>xml node</XmlNode>
<SubNodeObject>
<SubXmlNode>sub xml node</SubXmlNode>
</SubNodeObject>
</XmlClass>

Eğer hata mesajı alırsanız LİNK dosyayı indirip projenize referans ediniz.

Linq C# where tümcesi

C# ile Linq where ifadesinin kullanımı

kisiler isimli string dizideki elemanlardan içinde “u” harfi geçenlerin listelenmesini sağlar.

string[] kisiler = { “serdar”, “sibel”, “galip”, “uğur”, “banu”, “dilek” };
var kisi = from secili in kisiler where secili.Contains(”u”) select secili;
foreach (var seciliKisi in kisi)
Console.WriteLine(seciliKisi);

C# 3.0 var kullanımı

C# 3.0 ile gelen var tanımlayıcısının kullanımı

var sayi=10;  (sayi değişkeni sayısal bir veri tuttuğu için sayısal bir değişken olarak kullanılır)

var metin=”serdar türkel”; ( metin değişkenine metinsel bir değer atandığı için metin değişkeni bir karakter dizisi olarak kullanılır )

var değişkeni ile değişkenlerin veri tipleri yürütme zamanında (runtime) belirlenir.

var kisi = new { Ad = “serdar”, Soyad = “türkel” }; (kisi sınıfsal bir veri türü olarak belirlenir. “ad”, “soyad” ise  bu sınıfa ait özellikleri göstermektedir.)

C# ile döviz kurlarını çekmek

C# İle döviz kurlarını çekmek,

Konsol uygulamasıdır.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Xml;
using System.IO;
namespace Kurlar
{
class Program
{
static void Main(string[] args)
{
WebRequest wrequest = HttpWebRequest.Create(”http://www.tcmb.gov.tr/kurlar/today.xml”);
WebResponse wresponse = wrequest.GetResponse();
Stream stream = wresponse.GetResponseStream();
StreamReader srd = new StreamReader(stream);
string xmlDetail = srd.ReadToEnd();
srd.Close();
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlDetail);
XmlElement element = doc.DocumentElement;
XmlAttributeCollection rootAtt = element.Attributes;
Console.WriteLine(element.Name);
foreach (XmlAttribute attr in rootAtt)
{
Console.WriteLine(attr.Name + ” : ” + attr.Value);
}

XmlNodeList nodelist = element.ChildNodes;
foreach (XmlNode node in nodelist)
{
XmlAttributeCollection collectionatt = node.Attributes;
foreach (XmlAttribute attr in collectionatt)
{
Console.WriteLine(”   “+attr.Name + ” : ” + attr.Value);
}
XmlNodeList subNodelist = node.ChildNodes;
foreach (XmlNode subnode in subNodelist)
{
XmlAttributeCollection subcollectionatt = subnode.Attributes;
foreach (XmlAttribute subattr in subcollectionatt)
{
Console.WriteLine(subattr.Name + ” : ” + subattr.Value);
}
Console.WriteLine(”      ” + subnode.Name + ” : ” + subnode.InnerText);
}
}

}
}
}

JAVA Dinamik JTable

Dinamik JTable


Access ve SQL server üzerinden sorgu ile çağrılan sonuçları uygun jtable içerisine döşeyen kod…

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;
import java.sql.*;
public class modelTable extends JFrame{
private String connectSQLServer=”jdbc:odbc:Driver={SQL Server};Server=Host;Database=example;Uid=username;Pwd=password;”;
private String connectAccess=”jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\\db1.mdb;Uid=;Pwd=;”;
private String SQL=”select * from table1″;
public modelTable(String title,int w,int h){
super(title);
this.setSize(w,h);
Toolkit tk=this.getToolkit();
Dimension dim=tk.getScreenSize();
int x=(dim.width-w)/2;
int y=(dim.height-h)/2;
this.setLocation(x,y);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);

try {
Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);
Connection con=connectDB(connectAccess);
Statement st=con.createStatement();
ResultSet rest=st.executeQuery(SQL);
DefaultTableModel model=createModel(rest);
JTable table=createTable(model);
JScrollPane jsp=new JScrollPane(table);
this.add(jsp);
}
catch (Exception ex) {
JOptionPane op=new JOptionPane();
op.showMessageDialog(this,ex.getMessage());
}
}
public Connection connectDB(String driver) throws SQLException{
Connection con=DriverManager.getConnection(driver);
return con;
}
public DefaultTableModel createModel(ResultSet rest) throws SQLException{
DefaultTableModel dtm=new DefaultTableModel();
ResultSetMetaData rsmd=rest.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++){
dtm.addColumn(rsmd.getColumnName(i));
}

Vector rows;
while(rest.next()){
rows=new Vector();
for(int j=1;j<=rsmd.getColumnCount();j++){
rows.addElement(rest.getString(j));
}
dtm.addRow(rows);
}
return dtm;
}
public JTable createTable(DefaultTableModel dm){
JTable table=new JTable(dm);

return table;
}
public static void main(String args[]){
JFrame.setDefaultLookAndFeelDecorated(true);
modelTable mt=new modelTable(”SQL verilerini JTable\’a aktarma”,400,400);
mt.setVisible(true);

}
}

Chat Programı – TEST 1

Öncelikle forms.java dosyası


/**
* @(#)Chatin.java
*
* JFC Aplication
*
* @Serdar TÜRKEL
* @version 1.00 20/10/2006
*/

package chatin;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.plaf.metal.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class forms extends Thread implements Runnable{
public forms(){
this.setPriority(1);
}
public synchronized void run(){
try {
UIManager um=new UIManager();
um.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
}
catch (Exception ex) {
ex.printStackTrace();
}
JFrame.setDefaultLookAndFeelDecorated(true);
Chatin ch=new Chatin(”Chat – IN Room”,400,600,10);
ch.setVisible(true);
}
public static void main(String[] args) {
forms fr=new forms();
fr.start();
}
}

Yukarıdaki kodu derlemeden önce aşağıdaki kodu derleyin

[ Chatin.java ]

/**
* @(#)Chatin.java
*
* JFC Aplication
*
* @Serdar TÜRKEL
* @version 1.00 06/10/2006
*/

package chatin;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import javax.swing.tree.*;
import javax.swing.text.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
import javax.swing.filechooser.*;
import javax.swing.plaf.metal.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.sql.*;
import java.security.*;
import java.io.*;
import java.util.zip.*;
import java.util.*;
public class Chatin extends JFrame implements ActionListener,ListSelectionListener{
private int w,h;
private String title;
private JTextArea messageArea=new JTextArea();
private JTextArea responseOrRequestMessageArea=new JTextArea();
private JList onLineFriendsList=new JList();
private JButton sendButton,addIP;
private JDialog opt;
private ServerSocket serverSocket;
private String IP=”127.0.0.1″,nick2=”Undefined”;
private int port=8888;
private Socket socket;
private int controlValue=1;
private ArrayList list=new ArrayList(50);
private int count=1;
private Hashtable addIPList=new Hashtable(5);
private Vector listem=new Vector(1);
private JTextField IPAdressTxt,nickAdressTxt,nickFriendTxt;
public void valueChanged(ListSelectionEvent lse){
if(lse.getSource().equals(onLineFriendsList)){
String aranan=(String)onLineFriendsList.getSelectedValue();
IP=(String)addIPList.get(aranan);
}
}
public void actionPerformed(ActionEvent ae){
if(ae.getActionCommand().equals(”Options”)){
opt.setVisible(true);
}
else if(ae.getActionCommand().equals(”addIP”)){
if(!addIPList.containsKey(nickFriendTxt.getText())){
IP=IPAdressTxt.getText();
nick2=nickAdressTxt.getText();

addIPList.put(nickFriendTxt.getText(),IP);
listem.add(listem.size(),nickFriendTxt.getText());
onLineFriendsList.setListData(listem);
opt.setVisible(false);
this.validate();
}
else{
new JOptionPane().showMessageDialog(this,”eklemek istediğiniz arkadaşınız zaten şu an listenizde bulunuyor”,”Abort Chat-IN”,JOptionPane.YES_OPTION);
}

}
else if(ae.getActionCommand().equals(”SEND”)){
sendMessage();
}
else if(ae.getActionCommand().equals(”Exit”)){
exitForm();
}
else if(ae.getActionCommand().equals(”start”)){
try {
startListener(this.count);
addIP.setEnabled(true);
nickAdressTxt.setEditable(true);
IPAdressTxt.setEditable(true);
nickFriendTxt.setEditable(true);

}
catch (Exception ex) {
new JOptionPane().showMessageDialog(this,ex.toString(),”Abort Chat-IN”,JOptionPane.YES_OPTION);
}

}
else if(ae.getActionCommand().equals(”kaldir”)){
if(onLineFriendsList.isSelectionEmpty()){
new JOptionPane().showMessageDialog(this,”HERHANGİ BİR KİŞİ SEÇMEDİNİZ”,”Abort Chat-IN”,JOptionPane.YES_OPTION);
}
else{
if(new JOptionPane().showConfirmDialog(this,”SEÇTİĞİNİZ KİŞİ SİLİNECEKTİR!\n EMİN MİSİNİZ?”,”DELETE PERSONAL”,JOptionPane.YES_NO_OPTION)==0){
try {
int indexim=onLineFriendsList.getSelectedIndex();
addIPList.remove(indexim);
listem.remove(indexim);
onLineFriendsList.setListData(listem);
}
catch (Exception ex) {
new JOptionPane().showMessageDialog(this,”KİŞİ SİLİNDİ”,”INFO”,JOptionPane.INFORMATION_MESSAGE);
}

}
}

}
else{

}
}
public Chatin(String title,int w,int h,int count){
this.title=title;
this.w=w;
this.h=h;
this.count=count;
init();
createForm();
}
private void init(){
this.setTitle(title);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setSize(w,h);
Toolkit tk=this.getToolkit();
this.setLocation(((tk.getScreenSize().width-w)/2),((tk.getScreenSize().height-h)/2));
this.setResizable(false);
this.setBackground(Color.WHITE);
this.setLayout(null);
opt=createOptionsForm(”Options Form Chat-IN”,235,175);
}
private void createForm(){
this.setJMenuBar(createMenu());

JScrollPane jspMessageArea=new JScrollPane(messageArea);
messageArea.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent ke){
if(ke.getKeyCode()==ke.VK_ENTER){
sendButton.doClick();
}
}
});
jspMessageArea.setBounds(10,10,300,40);
this.add(jspMessageArea);

JScrollPane jspResponseOrRequestMessageArea=new JScrollPane(responseOrRequestMessageArea);
jspResponseOrRequestMessageArea.setBounds(10,55,370,250);
this.add(jspResponseOrRequestMessageArea);
onLineFriendsList.addListSelectionListener(this);
JScrollPane jspOnLineFriendsList=new JScrollPane(onLineFriendsList);
jspOnLineFriendsList.setBounds(10,350,370,190);
this.add(jspOnLineFriendsList);

sendButton=new JButton(”SEND”);
sendButton.setActionCommand(”SEND”);
sendButton.addActionListener(this);
sendButton.setBounds(315,10,65,40);

JButton kaldir=new JButton(”SEÇİLİ KİŞİYİ LİSTEDEN KALDIRMAK İÇİN TIKLAYIN”);
kaldir.setActionCommand(”kaldir”);
kaldir.setName(”kaldir”);
kaldir.addActionListener(this);
kaldir.setBounds(10,310,370,30);
this.add(kaldir);

this.add(sendButton);
}
private JMenuBar createMenu(){
JMenuBar bar=new JMenuBar();
JMenu file=new JMenu(”File”);
file.setActionCommand(”File”);
file.setMnemonic(KeyEvent.VK_F);
file.addActionListener(this);
JMenuItem options=new JMenuItem(”Options”);
options.setActionCommand(”Options”);
options.setMnemonic(KeyEvent.VK_O);
options.addActionListener(this);
JSeparator sep=new JSeparator();
JMenuItem exit=new JMenuItem(”Exit”);
exit.setActionCommand(”Exit”);
exit.setMnemonic(KeyEvent.VK_E);
exit.addActionListener(this);
file.add(options);
file.add(sep);
file.add(exit);
bar.add(file);

return bar;
}
private JDialog createOptionsForm(String title,int w,int h){
JDialog.setDefaultLookAndFeelDecorated(true);
JDialog dg=new JDialog(this,title,true);
dg.setLayout(null);
dg.setSize(w,h);
Toolkit tk=this.getToolkit();
dg.setLocation(((tk.getScreenSize().width-w)/2),((tk.getScreenSize().height-h)/2));

JButton start=new JButton(”Start”);
start.setActionCommand(”start”);
start.addActionListener(this);
start.setBounds(10,10,70,40);

addIP=new JButton(”ADD IP & NICK”);
addIP.setActionCommand(”addIP”);
addIP.addActionListener(this);
addIP.setBounds(85,10,130,40);
addIP.setEnabled(false);

IPAdressTxt=new JTextField();
IPAdressTxt.setActionCommand(”IPAdressTxt”);
IPAdressTxt.setEditable(false);
IPAdressTxt.setBounds(65,55,150,20);

nickAdressTxt=new JTextField();
nickAdressTxt.setActionCommand(”nickAdressTxt”);
nickAdressTxt.setEditable(false);
nickAdressTxt.setBounds(65,80,150,20);

nickFriendTxt=new JTextField();
nickFriendTxt.setActionCommand(”nickFriendTxt”);
nickFriendTxt.setEditable(false);
nickFriendTxt.setBounds(65,105,150,20);

JLabel IPLabel=new JLabel(”        IP :”);
IPLabel.setBounds(10,55,50,20);
dg.add(IPLabel);

JLabel nickLabel=new JLabel(”   NICK :”);
nickLabel.setBounds(10,80,50,20);
dg.add(nickLabel);

JLabel friendName=new JLabel(” Friend :”);
friendName.setBounds(10,105,50,20);
dg.add(friendName);

dg.add(nickFriendTxt);
dg.add(nickAdressTxt);
dg.add(IPAdressTxt);
dg.add(addIP);
dg.add(start);

return dg;
}
private void exitForm(){
if(new JOptionPane().showConfirmDialog(this,”will program exit!\n are you sure?”,”Exit Chat-IN”,JOptionPane.YES_NO_OPTION)==0){
try {
serverSocket.close();
}
catch (Exception ex) {
new JOptionPane().showConfirmDialog(this,”Server Socket nothing close!”,”Exit Chat-IN”,JOptionPane.YES_OPTION);
}
finally{
System.exit(0);
}
}
}
private void startListener(int limit) throws Exception{
try {
serverSocket=new ServerSocket(port);

//
for (int i=0;i<limit;i++){
server g=new server(list,responseOrRequestMessageArea,controlValue);
g.start();
list.add(g);
}
//
new JOptionPane().showMessageDialog(this,”Starting Server”,”Start Chat-IN”,JOptionPane.INFORMATION_MESSAGE);
listener listenerServer=new listener(serverSocket,list);
listenerServer.start();

}
catch (Exception ex) {
new JOptionPane().showMessageDialog(this,ex.toString(),”Abort Chat-IN”,JOptionPane.YES_OPTION);
}

}
private void sendMessage(){
try {
Socket sk=new Socket(IP,port);
PrintWriter out=new PrintWriter(sk.getOutputStream(),true);
out.println(”#["+nick2+"]<-\n”+messageArea.getText());
responseOrRequestMessageArea.append(”#["+nick2+"]->\n”+messageArea.getText()+”\n”);
messageArea.setText(”");
sk.close();
}
catch (Exception ex) {
new JOptionPane().showMessageDialog(this,”not sending message”,”Chat-IN”,JOptionPane.YES_OPTION);
}
}

}
class listener extends Thread implements Runnable{
private ServerSocket serverSocket=null;
private ArrayList list=null;
private Socket socket;
public listener(ServerSocket ss,ArrayList list){
serverSocket=ss;
this.list=list;
this.setPriority(2);
}
public synchronized void run(){
new JOptionPane().showMessageDialog(new JFrame(),”Starting Listener”,”Start Chat-IN”,JOptionPane.INFORMATION_MESSAGE);
try {
while(true){
socket=serverSocket.accept();
synchronized(list){
if(list.isEmpty()){
new JOptionPane().showMessageDialog(new JFrame(),”Not reading message”,”Start Chat-IN”,JOptionPane.INFORMATION_MESSAGE);
socket.close();
}
else{
server g=(server) list.get(0);
list.remove(0);
socket.setSoTimeout(10);
g.addSocket(socket);
}
}
}
}
catch (Exception ex) {

}

}
}
class server extends Thread implements Runnable{
private Socket socket=null;
private ArrayList list=null;
private JTextArea responseOrRequestMessageArea=null;
private int controlValue=1;
public server(ArrayList list,final JTextArea jta,int cv){
this.list=list;
responseOrRequestMessageArea=jta;
controlValue=cv;
this.setPriority(2);
}
public synchronized void addSocket(Socket s){
this.socket=s;
notify();
}
public synchronized void run(){
while(true){
try {
if(socket==null){
try {wait();}
catch (Exception ex) {continue;}
}

//process
InputStreamReader in;
BufferedReader bfr;
String reader;
while(true){
try {
in=new InputStreamReader(socket.getInputStream());
bfr=new BufferedReader(in);
while((reader=bfr.readLine())!=null){
responseOrRequestMessageArea.append(reader+”\n”);
}
controlValue++;
}
catch (Exception ex) {
new JOptionPane().showMessageDialog(new JFrame(),ex.toString(),”Abort Chat-IN”,JOptionPane.YES_OPTION);
}
}
//process
}
catch (Exception ex) {
new JOptionPane().showMessageDialog(new JFrame(),ex.toString(),”Abort Chat-IN”,JOptionPane.YES_OPTION);
}
finally {
try {
socket.close();
socket=null;
list.add(this);
responseOrRequestMessageArea=null;
controlValue=1;
}
catch (Exception ex) {
new JOptionPane().showMessageDialog(new JFrame(),ex.toString(),”Abort Chat-IN”,JOptionPane.YES_OPTION);
}
}
}
}
}