2014-10-12 77 views

回答

0

這取決於你喜歡什麼技術。 WebSockets非常適合解決實時問題。 Socket.IO能夠觸發客戶端和服務器端的事件,並對另一端的事件做出反應。

Socket.IO在Node JS服務器上運行良好。 (http://nodejs.org/

在此示例中(https://github.com/Automattic/socket.io/tree/master/examples/chat),您看到通過socket.io實現的聊天。您可以簡單地用交換機在客戶端觸發事件,而不是將結果顯示給用戶屏幕。

0

socket編程

插座提供一種使用TCP兩臺計算機之間的通信機制。客戶端程序在通信結束時創建套接字並嘗試將該套接字連接到服務器。

建立連接時,服務器在通信結束時創建一個套接字對象。客戶端和服務器現在可以通過寫入和讀取套接字進行通信。

java.net.Socket類表示一個套接字,並且java.net.ServerSocket類爲服務器程序提供了一種機制來偵聽客戶端並與它們建立連接。

服務器實例化一個ServerSocket對象,表示哪個端口號是通信上發生 - 建立使用套接字兩臺計算機之間建立TCP連接時

下面的步驟發生。

服務器調用ServerSocket類的accept()方法。此方法一直等到客戶端連接到給定端口上的服務器。

服務器等待後,客戶端實例化一個Socket對象,指定要連接的服務器名稱和端口號。

Socket類的構造函數嘗試將客戶端連接到指定的服務器和端口號。如果通信已建立,則客戶端現在具有能夠與服務器通信的Socket對象。

在服務器端,accept()方法返回對連接到客戶端套接字的服務器上的新套接字的引用。

連接建立後,可以使用I/O流進行通信。每個套接字都有一個OutputStream和一個InputStream。客戶端的OutputStream連接到服務器的InputStream,客戶端的InputStream連接到服務器的OutputStream。

有兩種類型的SOKET:

服務器套接字 - 創建於()綁定到一個端口,聽()用於連接()從客戶端。所以服務器只是在等待一個對話,並沒有啓動一個。

客戶端套接字 - 創建連接()到listen()服務器。客戶端啓動連接。

服務器應用

進口java.io. ; import java.net。;

公共類ServerApp {

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    try { 
     ServerSocket Server_Socket; 
     Server_Socket = new ServerSocket(5555); 

     Socket clientSocket = null; 
     clientSocket = Server_Socket.accept(); 

     DataInputStream input; 
     input = new DataInputStream(clientSocket.getInputStream()); 
     System.out.println(input.readUTF()); 

     DataOutputStream output; 
     output = new DataOutputStream(clientSocket.getOutputStream()); 

     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     String str = "", str2 = ""; 
     while (!str.equals("stop")) 
     { 
      str = input.readUTF(); 
      System.out.println("client says: " + str); 
      str2 = br.readLine(); 
      output.writeUTF(str2); 
      output.flush(); 
     } 
     input.close(); 
     clientSocket.close(); 
     Server_Socket.close(); 

    } catch (Exception e) { 
     System.out.println(e); 
    } 

} 

}

客戶端應用

進口java.io. ; import java.net。;

公共類ClientApp {

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    try { 
     Socket Client_Socket; 
     Client_Socket = new Socket("localhost", 5555); 

     DataInputStream input; 
     input = new DataInputStream(Client_Socket.getInputStream()); 

     DataOutputStream output; 
     output = new DataOutputStream(Client_Socket.getOutputStream()); 

     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     String str = "", str2 = ""; 
     while (!str.equals("stop")) { 
      str = br.readLine(); 
      output.writeUTF(str); 
      output.flush(); 
      str2 = input.readUTF(); 
      System.out.println("Server says: " + str2); 
     } 

     output.flush(); 
     output.close(); 
     Client_Socket.close(); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 

} 

}

相關問題