2014-10-12 110 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); 
    } 

} 

}

相关问题