0
我對Java相對來說比較新,而且我一直有一個反覆出現的問題,一直讓我很沮喪。Eclipse推出錯誤的.Class文件
我在同一個Project文件夾中有兩個類文件:'Main.java'&'Client.java'。
'Main.java'是服務器(我首先運行這個)。 我嘗試運行Client.java來連接到服務器。但是,無論我嘗試解決此問題,它都會重新啓動「Main.java」。我試圖嘗試選擇「運行」和「運行配置..」,但似乎沒有任何工作。這已經發生在幾個項目中,我似乎無法找出解決方案。
這裏是我的代碼:
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();
}
}
}
任何幫助是極大的讚賞。
謝謝。
+1但在服務器內啓動客戶端不是最佳選擇。考慮使用2個main()方法。 – FazoM
真@ fazovsky ..我在暗示這樣才能理解使用main()函數背後的概念。乾杯 – attaboy182
@ Attaboy182:非常感謝您的回覆。這導致我的問題,因爲它試圖再次運行服務器,當它已經運行並給出「地址已在使用」錯誤。這甚至發生在IBM DeveloperWorks批准的另一個簡單的服務器/客戶端程序的源代碼中,該程序應該可以直接使用。無論我做什麼,它都會重新啓動服務器(拒絕啓動客戶端),導致我無法連接這兩個服務器。 – mickm