⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 connectN 网络游戏。内含server and client端源程序
💻 JAVA
字号:
package server;

import utility.ConnectNConstants;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.util.Date;

public class Server extends JFrame implements ConnectNConstants {
	private static final long serialVersionUID = 1L;
	private ServerSocket serverSocket;

	public static void main(String[] args) {
		int port = 8000;
		Server frame;
		if (args.length == 1) {
			port = Integer.parseInt(args[0]);
		}
		frame = new Server(port);
		frame.setVisible(false);
	}

	public Server(int port) {
		JTextArea serverLog = new JTextArea();
		JScrollPane scrollPane = new JScrollPane(serverLog);
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 300);
		setTitle("ConnectNServer");
		setVisible(true);
		try {
			// Create a server socket
			this.serverSocket = new ServerSocket(port);
			serverLog.append(new Date() + ": Server started at socket " + port
					+ "\n");

			// Number a session
			int sessionNo = 1;

			// Ready to create a session for every two players
			while (true) {
				serverLog.append(new Date()
						+ ": Wait for players to join session " + sessionNo
						+ '\n');

				// Connect to player 1
				Socket player1 = serverSocket.accept();

				serverLog.append(new Date() + ": Player 1 joined session "
						+ sessionNo + '\n');
				serverLog.append("Player1's IP address: "
						+ player1.getInetAddress().getHostAddress() + '\n');

				// Notify that the player is Player 1
				new DataOutputStream(player1.getOutputStream())
						.writeInt(PLAYER1);

				//Get game initial setting from Player 1
				int connectNumber, dropNumber;
				int rowNumber, columnNumber;

				DataInputStream din = new DataInputStream(player1
						.getInputStream());
				rowNumber = din.readInt();
				columnNumber = din.readInt();
				connectNumber = din.readInt();
				dropNumber = din.readInt();

				serverLog.append("Player1 set the game to " + rowNumber
						+ " rows and " + columnNumber + " columns, " + "get a "
						+ connectNumber + " connection to win, " + dropNumber
						+ " disc(s) drop each time \n");

				// Connect to player 2
				Socket player2 = serverSocket.accept();

				serverLog.append(new Date() + ": Player2 joined session "
						+ sessionNo + '\n');
				serverLog.append("Player 2's IP address: "
						+ player2.getInetAddress().getHostAddress() + '\n');

				// Notify that the player is Player 2 and the game initial setting
				DataOutputStream dout = new DataOutputStream(player2
						.getOutputStream());
				dout.writeInt(PLAYER2);
				dout.writeInt(rowNumber);
				dout.writeInt(columnNumber);
				dout.writeInt(connectNumber);
				dout.writeInt(dropNumber);

				// Display this session and increment session number
				serverLog.append(new Date() + ": Start a thread for session "
						+ sessionNo++ + '\n');

				// Create a new thread for this session of two players
				HandleASession thread = new HandleASession(player1, player2,
						rowNumber, columnNumber, connectNumber, dropNumber);

				// Start the new thread
				thread.start();
			}
		} catch (IOException ex) {
			System.err.println("Lose player");
		}
		finally{
			try {
				this.serverSocket.close();
			} catch (IOException e) {
				System.exit(1);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -