TCP 서버 역할을하는 Java 응용 프로그램과 클라이언트 역할을하는 PHP 스크립트 사이의 단일 포트에 간단한 TCP 연결을 설정하려고합니다.간단한 Java TCP 서버 및 PHP 클라이언트 문제
다음 코드는 각각 게시 할 예정이지만 문제는 다음과 같습니다. Java 서버에 데이터를 연결하여 보낼 수 있습니다. 나는 그 자료를 얻고 그것을 인쇄 할 수있다. 내 문제는 PHP 서버에 응답을 다시 보내려고 발생합니다.
"echo socket_read ($ socket, 14, PHP_NORMAL_READ);"라는 마지막 줄을 주석 처리 할 때 " 데이터는 Java 서버에 잘 전달됩니다. 이 줄을 다시 추가하면 데이터가 Java 서버에 도착하지 않습니다.
내 문제는 내 문제가 내가 자바에서 데이터를 보내거나 서버에서 PHP로 데이터를 가져 오는 방법과 관련이 있다고 가정합니다.
이것은 정말 저조했습니다. 어떤 도움을 주시면 감사하겠습니다!
자바 서버 :
protected ServerSocket socket;
protected final int port = 9005;
protected Socket connection;
protected String command = new String();
protected String responseString = new String();
socket = new ServerSocket(port);
while(true)
{
// open socket
connection = socket.accept();
// get input reader
InputStreamReader inputStream = new InputStreamReader(connection.getInputStream());
BufferedReader input = new BufferedReader(inputStream);
// get output handler
DataOutputStream response = new DataOutputStream(connection.getOutputStream());
// get input
command = input.readLine();
// process input
Logger.log("Command: " + command);
responseString = command + " MC2 It Works!";
// send response
response.writeBytes(responseString);
response.flush();
response.close();
}
PHP 클라이언트 :이 해결
$address = 'example.com'; // obviously not the address I am using
$port = 9005;
$message = "Test";
$socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_connect($socket, $address, $port)
if(socket_send($socket, $message, strlen($message), MSG_EOF) != FALSE)
{
echo socket_read($socket, 14, PHP_NORMAL_READ);
}
responseString = 명령 만들기 + "\ 연구 \ n" "MC2 그것은 작품을!"; – clevertension
소켓이 데이터 전송을 완료했다는 것을 알 수있는 행의 EOF를 추가해야한다고 생각합니다. – clevertension
예, 분명히 문제의 일부였습니다. 나는 질문을 제출 한 후 약 20 분 만에 그것을 전부 알아 냈다. 인생도 마찬가지입니다. – KayoticSully