ここでは単純なサーバープログラムのコードです。クライアントが接続しようとしていても、接続しようとしているクライアントがいなくてもpersonオブジェクトが作成されます。 P.S. printStackTrace()をどのようにして、2番目のcatchステートメント(whileループ内)でサーバーの行のコメントを外すと、スタックトレースとは対照的に、赤い書き込みを取得します。ループ中にサーバープログラムがループしていた
'import java.net.ServerSocket;
import java.net.Socket;
public class Test {
ServerSocket ss;
int id;
public Test(int portNo){
id = 0;
Listen(portNo);
}
private void Listen(int portNo){
try{
ss = new ServerSocket(portNo);
}
catch(Exception e){
System.out.println(e.getMessage());
}
while(true){
try{
id++;
new Thread(new Person(ss.accept(),id)).start();
}
catch(Exception e){
System.out.println("2 " + e.getMessage());
//e.printStackTrace();
}
}
}
}
私がこれを実行するときはいつも、エラー「2ヌル」が繰り返されます。
Personクラス:
import java.net.Socket;
public class Person implements Runnable{
int id;
public Person(Socket s, int id){
this.id = id;
}
public void run(){
System.out.println(id + " Connected to server");
}
}
クライアントコード:
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;
public class test1{
String serverIp;
Boolean connected;
InetAddress IP;
Socket clientSocket;
Integer clientID;
int ssPortNo;
public test1(){
System.out.println("Enter IP : ");
Scanner sc = new Scanner(System.in);
String ip = sc.next();
System.out.println("Enter port : ");
String port = sc.next();
setupConnection(ip, port);
}
private void setupConnection(String serverIP, String port) {
int portInt = Integer.parseInt(port);
serverIp = serverIP;
try {
connected = true;
IP = InetAddress.getByName(serverIP);
clientSocket = new Socket(serverIP, portInt);
System.out.println("Connecting");
}
catch(Exception e){
System.out.println("1 " + e.getMessage());
}
}
}
エラーを投稿できますか?接続するクライアントを使わずにサーバーを実行しようとしましたが、正常に動作します... –
e.getMesageを使用すると「null」が表示されます。 –
私は上記のコードもチェックしました。何のエラーもありません。だから、クライアントのコードを投稿してください。 – Vijay