我对Java比较陌生,而且我一直有一个让我感到沮丧的反复出现的问题。
我在同一个Project文件夹中有两个类文件:' Main.java' &安培; ' Client.java'
' Main.java'是服务器(我先运行它)。 我尝试运行Client.java以连接到服务器。但是,它不断重新启动Main.java'无论我试图解决这个问题。我试过选择' Run As'和'运行配置..'但似乎没什么用。这在几个项目中发生了我,我似乎无法找到解决方案。
这是我的代码:
1:Main.java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException {
try {
final int PORT = 6677;
ServerSocket server = new ServerSocket(PORT);
System.out.println("Waiting for clients...");
while (true) {
Socket s = server.accept();
System.out.println("Client connected from "
+ s.getLocalAddress().getHostName());
Client chat = new Client(s);
Thread t = new Thread(chat);
t.start();
}
} catch (Exception e) {
System.out.println("An error occured.");
e.printStackTrace();
}
}
}
2:Client.java
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client implements Runnable {
private Socket socket;
public Client(Socket s) {
socket = s;
}
@Override
public void run() {
try {
Scanner in = new Scanner(socket.getInputStream());
PrintWriter out = new PrintWriter(socket.getOutputStream());
while (true) {
if (in.hasNext()) {
String input = in.nextLine();
System.out.println("Client Said: " + input);
out.println("You Said: " + input);
out.flush();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
非常感谢任何帮助。
感谢。
答案 0 :(得分:2)
那是因为程序的执行(无论它里面有多少个类)总是从包含" main()"的类开始。功能。 如您所见,Main.java是包含main()函数的文件,因此该程序的执行始终以此开头。 最简单的解决方案之一(不是最好的)是在main函数中创建客户端实例。希望这有帮助!