服務器想要發送消息到客戶端應用程序(java腳本)。 如果客戶端得到這個消息,它會激活(實時) 我應該使用socket.io嗎? 可以使用什麼樣的庫或方法?服務器和客戶端套接字編程?
回答
這取決於你喜歡什麼技術。 WebSockets非常適合解決實時問題。 Socket.IO能夠觸發客戶端和服務器端的事件,並對另一端的事件做出反應。
Socket.IO在Node JS服務器上運行良好。 (http://nodejs.org/)
在此示例中(https://github.com/Automattic/socket.io/tree/master/examples/chat),您看到通過socket.io實現的聊天。您可以簡單地用交換機在客戶端觸發事件,而不是將結果顯示給用戶屏幕。
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);
}
}
}
- 1. PHP套接字服務器/客戶端
- 2. 客戶端服務器udp套接字
- 3. 套接字java客戶端服務器
- 4. 客戶端 - 服務器套接字
- 5. 服務器/客戶端套接字
- 6. 客戶端服務器套接字C#
- 7. Python服務器客戶端套接字
- 8. Java套接字客戶端/服務器
- 9. Python中的客戶端服務器套接字編程
- 10. 服務器客戶端:套接字編程
- 11. java客戶端服務器套接字編程實現問題
- 12. 服務器的客戶端套接字編程輸出困難
- 13. 客戶端服務器套接字編程c-linux
- 14. 套接字編程客戶端服務器java
- 15. 客戶端 - 服務器套接字編程Java
- 16. 服務器/客戶端使用套接字編程
- 17. 客戶套接字編程在Java中 - 從服務器端
- 18. 套接字編程。服務器客戶端通信
- 19. 傳遞在客戶端服務器之間的套接字編程客戶端服務器C
- 20. C套接字服務器,Java套接字客戶端:阻塞!
- 21. Python套接字客戶端到Java套接字服務器
- 22. 客戶端 - 服務器Unix套接字和端口轉發
- 23. Python Web服務與套接字編程客戶端/服務器設計
- 24. 同時關閉服務器和客戶端套接字連接
- 25. 客戶端和服務器Android套接字連接
- 26. 無法連接Java套接字服務器和客戶端
- 27. 客戶端和服務器套接字連接
- 28. UDP套接字編程中的不同語言的客戶端和服務器
- 29. 使用WiFi和java套接字編程的服務器 - 客戶端聊天
- 30. C:2客戶端和1服務器中的UDP套接字編程