我想爲我的計算機科學決賽創建一個MapleStory類型的遊戲。它基本上是通過局域網播放的2D RPG。我的問題是如何讓兩臺電腦之間的連接同時進行?如何在Java中的同一網絡上的服務器和客戶端之間創建同時連接?
class MagicServer extends Thread
{
private ServerSocket serverSocket;
public MagicServer(int port) throws IOException
{
serverSocket = new ServerSocket(port);
//serverSocket.setSoTimeout(10000);
}
public void run()
{
Scanner kb = new Scanner(System.in);
while(true)
{
try
{
System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
System.out.println("Just connected to " + server.getRemoteSocketAddress());
DataInputStream in = new DataInputStream(server.getInputStream());
DataOutputStream out = new DataOutputStream(server.getOutputStream());
System.out.println(in.readUTF());
for(int i=0; i<5; i++)
{
System.out.println(in.readUTF());
out.writeUTF(kb.nextLine());
}
server.close();
}
catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}
catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String [] args)
{
int port = 2001;
try
{
Thread t = new MagicServer(port);
t.start();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
我用這個實驗,我可以爲了兩臺計算機之間只發送/收到消息(即服務器發送到客戶端然後客戶端發送到服務器)和我不能出去的順序。我將如何做到這一點?
如果你的要求有電腦硬是將數據發送到對方同時,我不認爲這是可能的。在網絡世界中,計算機不能同時進行通信。他們發出信號然後等待迴應。 – Chillie
這不僅可能,而且很常見。 –