簡體   English   中英

為什么不能使用套接字發送正確的數據? JAVA(在本地運行的客戶端-服務器程序)

[英]Why can't send the correct data with sockets? JAVA (Client-Server Program running on local)

我正在嘗試用Java制作服務器客戶端程序。 我正在嘗試在同一系統上運行。 它從客戶端向服務器發送文本文件,包括名稱等。但是,當服務器獲取文件時,它僅打印“ []”字符。 這是否意味着空或意思損壞的數據?

這是服務器;

package temel;

import java.io.File;
import java.io.InputStream;
import java.net.Socket;
import java.net.ServerSocket;

public class VeriAlma {

  private static int port;

  private static Socket socket;
  public VeriAlma(int port)
  {
      VeriAlma.port=port;
  }
  public static void veriAl() {
    try {
        ServerSocket listener = new ServerSocket(port);

                socket = listener.accept(); 

    }
    catch (java.lang.Exception ex) {
      ex.printStackTrace(System.out);
    }
  }

  public String run() {
    try {
      InputStream in = socket.getInputStream();


        String file_name = "x.txt";

        File file=new File(file_name);

        ByteStream.toFile(in, file);
      return file_name;
    }
    catch (java.lang.Exception ex) {
      ex.printStackTrace(System.out);
      return "asdasd";
    }
  }
  public void setPort(int port)
  {
      VeriAlma.port=port;

  }
}

這是客戶

package temel;
import java.io.*;
import java.net.*;
import java.lang.*;

import java.io.OutputStream;
import java.io.InputStream;
import java.io.File;
import java.io.FileOutputStream;

import java.net.Socket;

public class VeriGonderme {

      // host and port of receiver
      private static int    port;
      private static String host;

      public VeriGonderme(int port,String host)
      {
          this.port=port;
          this.host=host;
      }
      public void veriGonder(String dosyaIsmi) {
        try {
          Socket       socket = new Socket(host, port);
          OutputStream os     = socket.getOutputStream();


          ByteStream.toStream(os, 1);


            ByteStream.toStream(os, dosyaIsmi);
            ByteStream.toStream(os, new File(dosyaIsmi));
          }catch (Exception ex) {
          ex.printStackTrace();
        }
        }
      public void setPort(int port)
      {
          this.port=port;

      }
      public void setHost(String host)
      {
          this.host=host;

      }

      }

主機是“ localhost”端口是4444

這是我修改的原始代碼

但是,當服務器獲取文件時,它只會打印“ []”字符。

我希望看到一些這樣的字符,因為您將值1作為4字節二進制發送。 \\0\\0\\0\如果刪除此文件並僅發送一次文件,則它可能會按預期執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM