用java正确地与服务器和客户端WebSocket通信
我已经开发了一个简单的视频游戏,我想用websockets的多人游戏功能来更新它。我想要两个版本的游戏。第一个版本用作服务器,另一个版本用作客户端。我想从服务器初始化游戏并等待客户端的反应。我的第一个问题:是否可以在同一台机器上运行服务器和客户端(提供相同的ip作为输入)?其次,我使用以下代码从服务器端创建套接字:用java正确地与服务器和客户端WebSocket通信,java,sockets,websocket,Java,Sockets,Websocket,我已经开发了一个简单的视频游戏,我想用websockets的多人游戏功能来更新它。我想要两个版本的游戏。第一个版本用作服务器,另一个版本用作客户端。我想从服务器初始化游戏并等待客户端的反应。我的第一个问题:是否可以在同一台机器上运行服务器和客户端(提供相同的ip作为输入)?其次,我使用以下代码从服务器端创建套接字: try { serverSocket = new ServerSocket(10007); } catch (IOException e)
try {
serverSocket = new ServerSocket(10007);
}
catch (IOException e)
{
System.err.println("Could not listen on port: 10007.");
System.exit(1);
}
System.out.println ("Waiting for connection.....");
try {
clientSocket = serverSocket.accept();
}
catch (IOException e)
{
System.err.println("Accept failed.");
System.exit(1);
}
System.out.println ("Connection successful");
当我试图从客户端连接时,整个事情似乎都不起作用,因为我正在接收消息等待连接…
。我连接客户端的代码如下所示:
String serverHostname = new String("ip");
if (args.length > 0)
serverHostname = args[0];
System.out.println("Attemping to connect to host " +
serverHostname + " on port 10007.");
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket(serverHostname, 10007);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + serverHostname);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: " + serverHostname);
System.exit(1);
}
这里有什么问题?您的服务器端代码很好。这里需要注意的是,
ServerSocket.accept()代码>方法是一个锁定调用,这意味着程序执行将在客户端连接到它之前停止
其次,我可以从下面客户机代码的第一行看到一个问题
if (args.length > 0)
serverHostname = args[0];
<> >代码> ARG[0 ] < /C>可能不是IP地址,我不太清楚java命令行应用程序是如何运行的,但是C++中,例如,在正确的上下文中的ARGs(0)总是程序可执行的绝对路径。java中可能也是如此。
因此,您可能正在传递一个ip地址,但实际上将作为args[1]
传递,您的意思是?