分享一个从国外网站看到的socket程序,程序并不强悍,但能从代码

原文:分享一个从国外网站看到的socket程序,程序并不强悍,但能从代码中看到老外是怎么写代码的,咱可以取长补短

源代码下载地址:

package com.zuidaima.xs;/*****************************************************************Version:1.0*Date:02/03/2007*Author:**Description*This is a Server Side application of Chat System.*This application is used for receiving the messages from any client*and send to each and every client and in this we can maintain the*list of all online users.**Remarks*This application is unable to provide the private chatting facility******************************************************************/import java.io.*;import java.net.*;import java.util.*;public class MyServer{ServerSocket ss;Socket s;ArrayList al=new ArrayList();ArrayList al1=new ArrayList();ArrayList al2=new ArrayList();ArrayList alname=new ArrayList();Socket s1,s2;MyServer()throws IOException{ss=new ServerSocket(1004);// create server socketwhile(true){s=ss.accept();//accept the client sockets1=ss.accept();s2=ss.accept();al.add(s);// add the client socket in arraylistal1.add(s1);al2.add(s2);System.out.println("Client is Connected");MyThread2 m=new MyThread2(s2,al2,alname); //new thread for maintaning the list of user nameThread t2=new Thread(m);t2.start();MyThread r=new MyThread(s,al);//new thread for receive and sending the messagesThread t=new Thread(r);t.start();MyThread1 my=new MyThread1(s1,al1,s,s2); // new thread for update the list of user nameThread t1=new Thread(my);t1.start();}}public static void main(String[] args){try{new MyServer();}catch (IOException e){}}}//class is used to update the list of user nameclass MyThread1 implements Runnable{Socket s1,s,s2;static ArrayList al1;DataInputStream ddin;String sname;MyThread1(Socket s1,ArrayList al1,Socket s,Socket s2){this.s1=s1;this.al1=al1;this.s=s;this.s2=s2;}public void run(){try{ddin=new DataInputStream(s1.getInputStream());while(true){sname=ddin.readUTF();System.out.println("Exit :"+sname);MyThread2.alname.remove(sname);//remove the logout user name from arraylistMyThread2.every();al1.remove(s1);MyThread.al.remove(s);MyThread2.al2.remove(s2);if(al1.isEmpty())System.exit(0); //all client has been logout}}catch(Exception ie){}}}// class is used to maintain the list of all online usersclass MyThread2 implements Runnable{Socket s2;static ArrayList al2;static ArrayList alname;static DataInputStream din1;static DataOutputStream dout1;MyThread2(Socket s2,ArrayList al2,ArrayList alname){this.s2=s2;this.al2=al2;this.alname=alname;}public void run(){try{din1= new DataInputStream(s2.getInputStream());alname.add(din1.readUTF());// store the user name in arraylistevery();}catch(Exception oe){System.out.println("Main expression"+oe);}}// send the list of user name to all clientstatic void every()throws Exception{Iterator i1=al2.iterator();Socket st1;while(i1.hasNext()){st1=(Socket)i1.next();dout1=new DataOutputStream(st1.getOutputStream());ObjectOutputStream obj=new ObjectOutputStream(dout1);obj.writeObject(alname); //write the list of users in stream of all clientsdout1.flush();obj.flush();}}}//class is used to receive the message and send it to all clientsclass MyThread implements Runnable{Socket s;static ArrayList al;DataInputStream din;DataOutputStream dout;MyThread(Socket s, ArrayList al){this.s=s;this.al=al;}public void run(){String str;int i=1;try{din=new DataInputStream(s.getInputStream());}catch(Exception e){}while(i==1){try{str=din.readUTF(); //read the messagedistribute(str);}catch (IOException e){}}}// send it to all clientspublic void distribute(String str)throws IOException{Iterator i=al.iterator();Socket st;while(i.hasNext()){st=(Socket)i.next();dout=new DataOutputStream(st.getOutputStream());dout.writeUTF(str);dout.flush();}}}

,真正的爱,应该超越生命的长度心灵的宽度灵魂的深度

分享一个从国外网站看到的socket程序,程序并不强悍,但能从代码

相关文章:

你感兴趣的文章:

标签云: