Я надеюсь, что это может помочь. Если кто-нибудь сможет заставить его работать полностью, мне тоже будет интересно :)

отаю над проектом, который требует ea p2p-сервера, но я не нашел ни одного примера кода php-сервера java-client. Я понимаю концепцию, как работает дырокол udp, но я не могу заставить что-либо работать в коде.

Что я пробовал:

TheSocket.java

public class TheSocket {

public static String response = "hello";
public static String request;
public static String webServerAddress;

public static ServerSocket s;

protected static ServerSocket getServerSocket(int port)throws Exception{
    return new ServerSocket(port);
}

public static void handleRequest(Socket s){
    BufferedReader is;
    PrintWriter os;

    try{
        webServerAddress = s.getInetAddress().toString();
        is = new BufferedReader(new InputStreamReader(s.getInputStream()));

        request = is.readLine();

        System.out.println(request);

        os = new PrintWriter(s.getOutputStream(), true);
        os.println("HTTP/1.0 200");
        os.println("Content-type: text/html");
        os.println("Server-name: TheSocket");
        os.println("Content-length: " + response.length());
        os.println("");
        os.println(response);
        os.flush();
        os.close();
        s.close();

    }catch(Exception e){
        System.out.println("Failed to send response to client: " + e.getMessage());
    }finally{
        if(s != null){
            try{
                s.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
    return;
}
}

Main.java

public class Main {

public static void main(String[] args)throws Exception{
    TheSocket.s = TheSocket.getServerSocket(6789);
    while(true){
        Socket serverSocket = TheSocket.s.accept();
        TheSocket.handleRequest(serverSocket);
    }
}

PHP-CONNECT.php - чтобы получить порт других пользователей, я вручную подключаюсь и использую порт, показанный на веб-странице.

<?php
    echo $_SERVER['REMOTE_ADDR'].':'.$_SERVER['REMOTE_PORT'];
?>

Проблема с кодом выше в том, что он не может сделать это в сокет, если я не перенесу вперед.

Прокомментируйте, если у вас есть какие-либо вопросы!

Ответы на вопрос(1)

Ваш ответ на вопрос