我目前正在使用java.net。*下的類來創建我正在創建的MMORPG的Java應用程序。它將與Unity3D遊戲連接(使用.NET Socket for TCP)。我不確定如何處理玩家的登錄/身份驗證。用於遊戲登錄/認證的Java Socket服務器
對此提出建議?我正在考慮通過https的安全形式處理身份驗證,在數據庫中創建並存儲一個臨時登錄密鑰,然後將密鑰發送回客戶端,使用隨機生成的密鑰將其分配一分鐘以連接到遊戲服務器。這是一個安全可靠的解決方案,還是有更好的我可以做的?
服務器類
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class Server extends Thread {
public static final int MAX_CLIENTS = 500;
private ServerSocket listener;
protected ArrayList<Client> clients;
public Server(int listenPort) throws IOException {
listener = new ServerSocket(
listenPort, MAX_CLIENTS,
InetAddress.getLocalHost()
);
clients = new ArrayList<Client>();
}
@Override
public void run() {
while (true) {
try {
Socket socket = listener.accept();
Client client = new Client(socket, this);
clients.add(client);
new Thread(client).start();
} catch (IOException e) {}
}
}
public static void main(String[] args) throws IOException {
new Server(4428).start();
}
}
客戶端類
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client implements Runnable {
private Socket socket;
private Server server;
private BufferedReader in;
private PrintWriter out;
public Client(Socket sock, Server serv) {
socket = sock;
server = serv;
in = null;
out = null;
}
@Override
public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
// Read Data with read()
}
} catch (IOException e) {}
}
public void read() throws IOException {
}
public void send(String data) {
}
}
發表一些代碼。如果您向我們展示您迄今爲止所做的工作,這會有所幫助。 – EnKrypt
我發佈了迄今爲止我所擁有的。我還沒有開始任何身份驗證,因爲這可以使用登錄服務器完成,或作爲Unity的www表單完成。 –