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(); } } }
以上就是双向同步聊天小程序[ByJavaOnLinux]实现代码的详细内容,更多请关注php中文网其它相关文章!
……