在我开始这个问题之前,我想说我是WebSockets的新手。
我必须创建一个与服务器联系的客户端,并检索服务器发送的数据。 (使用用户名和密码)。
我已尝试使用此功能:http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html
没有成功(我不确定我应该使用哪个websocket jar,所以我只是导入了jetty-all jar文件)。我的程序与我提供的教程完全一样,但是一旦我运行它。它充满了错误(错误与导入的jar文件有关)。
现在我转向Java EE WebSocket教程:http://docs.oracle.com/javaee/7/tutorial/doc/websocket.htm
我无法理解我的生活。
我没有要求提供完整的代码,也许是关于如何使用Java EE解决此问题的指南。我很难找到纯粹基于Java的客户端的在线资源。
答案 0 :(得分:0)
如果你有时间(一小时)进一步研究这项技术,这里有一篇关于Java套接字的好教程:http://docs.oracle.com/javase/tutorial/networking/sockets/
以下是服务器端套接字的一些基本示例代码:
private final static int PORT_NUMBER = 3333;
try (
//ServerSocket listening to port 3333
ServerSocket serverSocket =
new ServerSocket(PORT_NUMBER);
//ServerSocket.accept(); blocks program execution until a client socket connects,
//put it in a loop to listen for continuous connections
Socket clientSocket = serverSocket.accept();
PrintWriter out =
new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
) {
//Read data from streams
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
}
} catch (IOException e) {
System.out.println("Exception caught when trying to listen on port "
+ portNumber + " or listening for a connection");
System.out.println(e.getMessage());
}
在客户端,您使用Socket连接到ServerSocket:
Socket echoSocket = new Socket(hostName, portNumber);
例如,“hostname”可以是“localhost”,上面示例中的“portnumber”将是“3333”。主机名是您要连接的IP。
代码示例来自Oracle.com,在我链接的教程中。