0
이 프로그램을 실행하면 Client 클래스는 사용자에게 명령을 입력하라는 메시지를 표시하고 해당 명령은 Server 클래스로 이동하여 파일을 열고 해당 파일의 각 행을 읽고 바이트 길이 표시 할 Client 클래스로 돌아갑니다.JAVA TCP 클라이언트 - 서버 연결
불행히도 명령을 입력하면 아무 일도 일어나지 않습니다. & 이유가 확실하지 않습니다.
package TcpServer;
import java.io.BufferedReader;
import java.io.*;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] args) {
// The name of the file to open.
String fileName = "input.txt";
// This will reference one line at a time
String line = null;
String holder=null;
String clientWord;
int bytNumber;
try {
//create welcoming socket at port 5555
ServerSocket welcomeSocket = new ServerSocket(5555);
//wait, on welcoming socket for contact by client
Socket connectionSocket = welcomeSocket.accept();
//create input stream, attached to socket
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
//create output stream, attached to socket
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
//read in line from socket
clientWord = inFromClient.readLine();
if(clientWord.equals("query")) {
try {
// FileReader reads text files in the default encoding.
FileReader fileReader = new FileReader(fileName);
// Always wrap FileReader in BufferedReader.
BufferedReader buffer = new BufferedReader(fileReader);
while((line = buffer.readLine()) != null) {
System.out.println(line);
bytNumber = line.getBytes().length;
holder=Integer.toString(bytNumber);
//pr.println(bytNumber);//only printing first line not going until eof
outToClient.writeBytes(holder);
// line = buffer.readLine();
// pr.flush();
}
// Always close files.
buffer.close();
}
catch(FileNotFoundException ex) {
System.out.println("Unable to open file '" + fileName + "'");
}
catch(IOException ex) {
System.out.println ("Error reading file '" + fileName + "'");
// Or we could just do this:
// ex.printStackTrace();
}
}// end if statement
}
catch(Exception ex) {
}
}
}
당신은으로 시작할 것 **하지 ** 클라이언트 클래스에서 무시 예외. 오류 메시지를 무시하면 디버깅의 좋은 방법은 없습니다. – GhostCat
유일한 메시지는 clientSocket을 닫기위한 경고입니다.하지만 그렇게했을 때 나는 여전히 동일한 출력을 얻습니다. – n00bie1221
여기 저기에 소켓을 제대로 닫지 않거나 연결 문제 등 다양한 문제가있을 수 있습니다. 힌트 : 디버거에서 실행 해보십시오. 인쇄 문을 추가하여 현재 진행중인 작업을 확인하십시오. 먼저 클라이언트/서버 통신의 전체 과정을 안내하는 단계별 자습서 (예 : http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html)를 읽으십시오. – GhostCat