java - require_once():javabridge 需要打开失败
问题描述
我有问题。
我已经设置了我的java
和我的 java 网桥。我已经运行并打开了端口,8080
但是当我运行我的 php 代码时,我在这里遇到了错误:
Warning: require_once(http://localhost:8080/JavaBridge/java/Java.inc): failed to open stream: HTTP request failed! in C:\xampp\htdocs\mt4\test2.php on line 3
Fatal error: require_once(): Failed opening required 'http://localhost:8080/JavaBridge/java/Java.inc' (include_path='.;C:\php\pear') in C:\xampp\htdocs\mt4\test2.php on line 3
在我的选择端口代码中,我使用此代码使用手动端口,
public void init(final String[] s) {
String sockname = null;
int logLevel = -1;
final String tcpSocketName = "9267";
if (s.length > 3) {
this.checkOption(s);
}
try {
if (s.length > 0) {
sockname = s[0];
if (sockname.startsWith("-")) {
this.checkOption(s);
}
}
try {
if (s.length > 1) {
logLevel = Integer.parseInt(s[1]);
}
}
catch (NumberFormatException e2) {
this.usage();
}
catch (Throwable t) {
t.printStackTrace();
}
if (s.length == 0) {
try {
final int tcpSocket = Integer.parseInt(tcpSocketName);
final int freeJavaPort = findFreePort(tcpSocket);
final int freeHttpPort = findFreePort(8080);
final int freeHttpsPort = findFreePort(8443);
/* final Object result = JOptionPane.showInputDialog(null, "Start a socket listener on port", "Starting the PHP/Java Bridge ...", 3, null, new String[] { "INET_LOCAL:" + freeJavaPort, "INET:" + freeJavaPort, "HTTP_LOCAL:" + freeHttpPort, "HTTP:" + freeHttpPort, "HTTPS_LOCAL:" + freeHttpsPort, "HTTPS:" + freeHttpsPort }, "HTTP_LOCAL:" + freeHttpPort);
if (result == null) {
System.exit(0);
}*/
//sockname = result.toString();
sockname = "8080";
}
catch (Throwable t2) {}
}
if (s.length == 0) {
TCPServerSocket.TCP_PORT_BASE = Integer.parseInt(tcpSocketName);
}
if (checkServlet(logLevel, sockname, s)) {
return;
}
final ISocketFactory socket = bind(logLevel, sockname);
if ("true".equals(System.getProperty("php.java.bridge.test.startup"))) {
System.exit(0);
}
JavaBridge.initLog(String.valueOf(socket), logLevel, s);
JavaBridge.init(socket, logLevel, s);
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
我xampp
用于运行 php。我的 tomcat 已经打开了 8080 端口,并且在 php.ini 我已经设置allow_url_include=On
但仍然无法连接到我的 javaBridge 端口,为什么会这样?谁能帮我解决这个问题
如果我使用此代码,
final Object result = JOptionPane.showInputDialog(null, "Start a socket listener on port", "Starting the PHP/Java Bridge ...", 3, null, new String[] { "INET_LOCAL:" + freeJavaPort, "INET:" + freeJavaPort, "HTTP_LOCAL:" + freeHttpPort, "HTTP:" + freeHttpPort, "HTTPS_LOCAL:" + freeHttpsPort, "HTTPS:" + freeHttpsPort }, "HTTP_LOCAL:" + freeHttpPort);
if (result == null) {
System.exit(0);
}
sockname = result.toString();
// sockname = "8080";
}
但我必须选择我将使用的女巫端口......所以我需要设置端口使用静态端口。
这是我的班级TCPServerSocket
,
//
// Decompiled by Procyon v0.5.36
//
package php.java.bridge.http;
import java.net.Socket;
import java.net.UnknownHostException;
import java.net.InetAddress;
import java.io.IOException;
import java.net.ServerSocket;
public class TCPServerSocket implements ISocketFactory
{
public static int TCP_PORT_BASE;
private ServerSocket sock;
private int port;
boolean local;
public static ISocketFactory create(String name, final int backlog) throws IOException {
boolean local = false;
if (name == null) {
throw new NullPointerException("name");
}
if (name.startsWith("INET:")) {
name = name.substring(5);
}
else if (name.startsWith("INET_LOCAL:")) {
local = true;
name = name.substring(11);
}
final int p = Integer.parseInt(name);
final TCPServerSocket s = new TCPServerSocket(p, backlog, local);
return s;
}
private ServerSocket newServerSocket(final int port, final int backlog) throws IOException {
try {
if (this.local) {
return new ServerSocket(port, backlog, InetAddress.getByName("127.0.0.1"));
}
}
catch (UnknownHostException ex) {}
return new ServerSocket(port, backlog);
}
private void findFreePort(final int start, final int backlog) {
int port = start;
while (port < start + 100) {
try {
this.sock = this.newServerSocket(port, backlog);
this.port = port;
return;
}
catch (IOException e) {
++port;
continue;
}
}
}
private TCPServerSocket(final int port, final int backlog, final boolean local) throws IOException {
this.local = local;
if (port == 0) {
this.findFreePort(TCPServerSocket.TCP_PORT_BASE, backlog);
}
else {
this.sock = this.newServerSocket(port, backlog);
this.port = port;
}
}
@Override
public void close() throws IOException {
this.sock.close();
}
@Override
public Socket accept() throws IOException {
final Socket s = this.sock.accept();
s.setTcpNoDelay(true);
return s;
}
@Override
public String getSocketName() {
return String.valueOf(this.port);
}
@Override
public String toString() {
return (this.local ? "INET_LOCAL:" : "INET:") + this.getSocketName();
}
static {
TCPServerSocket.TCP_PORT_BASE = 9267;
}
}
解决方案
推荐阅读
- reactjs - 如何使用 React Hooks 一次使用效果,但仍使用状态?
- vb.net - 从 Outlook 拖动到 .net 应用程序时图像被裁剪(拉伸)
- sabre - 从本机 API 桥应用程序通过 Sabre Red 工作区调用 SWS
- javascript - “删除”和“Reflect.deleteProperty()”有什么区别
- ag-grid - 输入不符合要求时如何防止应用文本列过滤器?
- java - 递增函数参数是使用递归更新“计数器”的好方法吗?
- sql - 不允许聚合聚合 Bigquery
- asp.net-mvc - 在实体框架中的两个类之间创建一对一关系时出错
- node.js - 将标头发送到客户端后无法设置标头-保存到 MongoDb 的条目-Express.Js
- api - Podio Api:为什么 PUT 请求 /app/{app_id}/field/{field_id} 删除联系人应用的类别字段选项?