【发布时间】:2017-09-15 04:30:42
【问题描述】:
我正在做一个需要 ea p2p 服务器的项目,但我还没有找到任何 java-client php-server 示例代码。我了解 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'];
?>
上面代码的问题是,除非我进行端口转发,否则它无法进入套接字。
有什么问题可以留言!
【问题讨论】:
-
你已经写过代码了吗?如果是这样,请提供代码并说明究竟是什么不工作
-
我现在没有任何代码,否则我会添加它
-
欢迎来到 Stack Overflow,请阅读本站中的 how to ask a question。在询问之前始终保持具体并尽最大努力,并且不要将 Stack Overflow 视为教程的存储库。我会推荐你实现一个简单的
PHP server。然后,您可以询问如何将Java Client连接到您的特定PHP Server,这将给这里的人们提供一些想法。 -
@teocci 该图描述了允许我在不使用端口转发的情况下通过的连接路径,我所要求的只是有关如何完成此操作的示例代码 :)
-
我告诉过你这不是一个教程库。如果你想要一个例子去 Github 或者在 google 上搜索。如果您想提出正确的问题,请阅读本网站中的how to ask a question。
标签: java php sockets udp hole-punching