双向同步聊天小程序[ByJavaOnLinux]

一个很简单的网络聊天小工具,java实现,双向同步发送信息,功能增加中
局域网内ip请自行更改,只要变更client端的localhost ip为另一台pc的ip就行

import java.io.*;

import java.net.Socket;

import java.net.ServerSocket;

import java.net.SocketException;



public class TestServer {

         public static void main(String[] args) {

                 try {

                         //open the communication port for messenge-transfer

                         //server socket id:8888

                        ServerSocket s = new ServerSocket(8888);



                         //create socket instance and set it be waiting state to accept data

                        Socket s1 = s.accept();



                         //original data stream

                        InputStream is = s1.getInputStream();

                        OutputStream os = s1.getOutputStream();



                        

                        DataOutputStream dos = new DataOutputStream(os);

                        DataInputStream dis = new DataInputStream(is);

                        System.out.println( "Server started!");

                         new MyServerReader(dis).start();

                         new MyServerWriter(dos).start();



                } catch (IOException ioe) {

                        ioe.printStackTrace();

                }

        }

}



class MyServerReader extends Thread {

         private DataInputStream dis;

         public MyServerReader(DataInputStream dis) {

                 this.dis = dis;

        }



         public void run() {

                String info;

                 try {

                         while ( true) {

                                info = dis.readUTF();

                                System.out.println( "Ta said:" + info);

                                 if (info.equals( "bye") || info.equals( "88")) {

                                        System.out.println( "Ta offline, connection's out!");

                                        System.exit(0);

                                }

                        }

                } catch (IOException e) {

                        e.printStackTrace();

                }

        }

}



class MyServerWriter extends Thread {

         private DataOutputStream dos;

         public MyServerWriter (DataOutputStream dos) {

                 this.dos = dos;

        }



         public void run() {

                String info;

                InputStreamReader isr = new InputStreamReader(System.in);

                BufferedReader br = new BufferedReader(isr);

                 try {

                         while ( true) {

                                info = br.readLine();

                                dos.writeUTF(info);

                                 if (info.equals( "bye") || info.equals( "88")) {

                                        System.out.println( "Local machine Offline, application exit!");

                                        System.exit(0);

                                }

                        }

                } catch (IOException e) {

                        e.printStackTrace();

                }

        }

}

client端的:
import java.io.*;

import java.net.Socket;

import java.net.SocketException;



public class TestClient {

         public static void main (String[] args) {

                 try {

                        Socket s1 = new Socket( "127.0.0.1", 8888);

                        InputStream is = s1.getInputStream();

                        OutputStream os = s1.getOutputStream();



                        DataInputStream dis = new DataInputStream(is);

                        DataOutputStream dos = new DataOutputStream(os);



                         new MyClientReader(dis).start();

                         new MyClientWriter(dos).start();

                } catch (IOException e) {

                        e.printStackTrace();

                }

        }

}



class MyClientReader extends Thread {

         private DataInputStream dis;

         public MyClientReader(DataInputStream dis) {

                 this.dis = dis;

        }



         public void run() {

                String info;

                 try {

                         while ( true) {

                                info = dis.readUTF();

                                System.out.println( "Ta said:" + info);

                                 if (info.equals( "bye") || info.equals( "88")) {

                                        System.out.println( "Ta offline, connection's out!");

                                        System.exit(0);

                                }

                        }

                } catch (IOException e) {

                        e.printStackTrace();

                }

        }

}



class MyClientWriter extends Thread {

         private DataOutputStream dos;

         public MyClientWriter (DataOutputStream dos) {

                 this.dos = dos;

        }



         public void run() {

                String info;

                InputStreamReader isr = new InputStreamReader(System.in);

                BufferedReader br = new BufferedReader(isr);

                 try {

                         while ( true) {

                                info = br.readLine();

                                dos.writeUTF(info);

                                 if (info.equals( "bye") || info.equals( "88")) {

                                        System.out.println( "Local machine Offline, application exit!");

                                        System.exit(0);

                                }

                        }

                } catch (IOException e) {

                        e.printStackTrace();

                }

        }

}

你可能感兴趣的:(linux,职场,synchronize,休闲,netchatting)