Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用套接字将文件从php客户端发送到java服务器_Java_Php_File_Sockets - Fatal编程技术网

如何使用套接字将文件从php客户端发送到java服务器

如何使用套接字将文件从php客户端发送到java服务器,java,php,file,sockets,Java,Php,File,Sockets,我想从php客户端传输java服务器的套接字文件 来自Java的Java是一个好工作 但php不能将文件传输到java服务器 我需要将java代码或php代码转换为php代码 我想知道如何通过其他方法从php客户端传输java服务器的套接字文件。 请帮帮我。。。 谢谢你 Java客户端代码 File file = new File(fileName); Socket socket = new Socket("localhost", 20225); ObjectInputStream ois =

我想从php客户端传输java服务器的套接字文件

来自Java的Java是一个好工作

但php不能将文件传输到java服务器

我需要将java代码或php代码转换为php代码 我想知道如何通过其他方法从php客户端传输java服务器的套接字文件。 请帮帮我。。。 谢谢你

  • Java客户端代码

    File file = new File(fileName);
    Socket socket = new Socket("localhost", 20225);
    ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
    
    oos.writeObject(file.getName());
    
    FileInputStream fis = new FileInputStream(file);
    byte [] buffer = new byte[100];
    Integer bytesRead = 0;
    
    while ((bytesRead = fis.read(buffer)) > 0) {
        oos.writeObject(bytesRead);
        oos.writeObject(Arrays.copyOf(buffer, buffer.length));
    }
    
    oos.close();
    ois.close();
    
  • Java服务器代码

    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
    ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
    FileOutputStream fos = null;
    byte [] buffer = new byte[BUFFER_SIZE];
    String filename = null;
    Map<String, Object> retMap = new HashMap<String, Object>();
    
    // 1. Read file name.
    Object obj = ois.readObject();
    
    try {
    
        filename = Config.getInstance().getProperties("dispatcher.policy") + obj;
        fos = new FileOutputStream(new File(filename));   
    
        // 2. Read file to the end.
        Integer bytesRead = 0;
        do {
            obj = ois.readObject();
    
            bytesRead = (Integer)obj;
            obj = ois.readObject();
            buffer = (byte[])obj;
    
            // 3. Write data to output file.
            fos.write(buffer, 0, bytesRead);
    
        } while (bytesRead == BUFFER_SIZE);
    
        logger.info("File transfer success : {} ", filename );
    
    
        fos.close();
    
    }catch(Exception e){
    
    }
    oos.writeObject("OK");
    ois.close();
    oos.close();
    
    ObjectOutputStream oos=新的ObjectOutputStream(socket.getOutputStream());
    ObjectInputStream ois=新的ObjectInputStream(socket.getInputStream());
    FileOutputStream=null;
    字节[]缓冲区=新字节[缓冲区大小];
    字符串文件名=null;
    Map retMap=newhashmap();
    // 1. 读取文件名。
    Object obj=ois.readObject();
    试一试{
    filename=Config.getInstance().getProperties(“dispatcher.policy”)+obj;
    fos=新文件输出流(新文件(文件名));
    //2.将文件读到底。
    整数字节读取=0;
    做{
    obj=ois.readObject();
    bytesRead=(整数)obj;
    obj=ois.readObject();
    缓冲区=(字节[])obj;
    //3.将数据写入输出文件。
    fos.写入(缓冲区,0,字节读取);
    }while(bytesRead==缓冲区大小);
    info(“文件传输成功:{}”,文件名);
    fos.close();
    }捕获(例外e){
    }
    oos.writeObject(“OK”);
    ois.close();
    oos.close();
    
  • 返回流资源,如果未能返回,则返回false。它可能需要另外三个参数:超时、标志和上下文-如果需要更改默认值,请参阅文档以获取更多信息

    我将tcp://作为套接字传输,顺便说一下,这是默认值。我把它作为一个提示,您可能会使用其他传输,最有可能来自列表或其他列表。当使用localhost时,后者是一种更快的方法,但是您需要一个支持localhost的操作系统,以及(如果可能的话,在java中)java服务器部分的适当代码

    是一种二进制安全写入-它只是将作为第二个参数传递的二进制数据写入作为第一个参数传递的资源

    也以二进制安全的方式完全按照其名称执行。第一个参数是文件的路径。可能还需要几个参数——如果默认值不合适,请参阅文档

    $fp = stream_socket_client("tcp://localhost:20225", $error_number, $error_string);
    if ( !$fp ) {
        # output what went wrong with a new line at the end
        echo "$error_number ($error_string)\n";
    } else {
        fwrite($fp, file_get_contents(FILE_NAME));
    }
    # uncomment next line if you happen to have more code below
    # fclose($fp); # does what it says - closes the resource