Server:
import java.io.*; import java.net.*; public class server implements Runnable { private int port; private ServerSocket sc; public server(int port)throws IOException { this.port = port; //建立ServerSocket this.sc = new ServerSocket(port); } public void run() { Socket con = null; while(true) { System.out.println("等待連線....."); try { con = this.sc.accept(); //取得Client的IP System.out.println(con.getInetAddress()); //取得client資料 System.out.println("取得資料:"); DataInputStream in = new DataInputStream(con.getInputStream()); System.out.println("Client:"+in.readUTF()); //對client傳輸資料 DataOutputStream out = new DataOutputStream(con.getOutputStream()); out.writeUTF("我是Server"); out.flush(); //關閉socket con.close(); } catch(IOException e) { e.printStackTrace(); } } } public static void main(String [] argv)throws IOException { //new出一個thread Thread socket_thread = new Thread(new server(1234)); socket_thread.start(); } }
Client:
import java.io.*; import java.net.*; public class client { public static void main(String [] argv)throws IOException { StartClient(1234); } public static void StartClient(int port) { try { //設定連線的主機位置 InetAddress add = InetAddress.getByName("ecc.johnsonlu.org"); SocketAddress sc_add= new InetSocketAddress(add,port); Socket sc = new Socket(); int timeout = 2000 ; //timeout 2秒 System.out.println("連線中...."); //與主機連線 sc.connect(sc_add,timeout); System.out.println(sc.getLocalAddress() + "連線到" + sc.getInetAddress()); //傳送資料到Server端 DataOutputStream out = new DataOutputStream(sc.getOutputStream()); out.writeUTF("我是Client"); out.flush(); //接收Server端資料 DataInputStream in = new DataInputStream(sc.getInputStream()); System.out.println("Server:" + in.readUTF()); } catch(SocketTimeoutException e) { System.out.println("Timeout"); } catch(IOException e) { e.printStackTrace(); } } }
DataInputStream 和 DataOutputStream的用法
read(write)
read(write)Boolean
read(write)Byte
read(write)Bytes
read(write)Char
read(write)Chars
read(write)Double
read(write)Float
read(write)Int
read(write)Long
read(write)Short
read(write)UTF