none
網路資料傳輸疑問C#(Client)<->Java(Server) RRS feed

  • 問題

  • 您好:

    最近再寫一個資料傳輸的程式,但是傳輸資料的過程並不是很順利,我大概的寫法如下(省略Socket的部份,因連線傳輸正常)

     

    Server(Java)

    //Server (Java)

     ...

    //Socket connection, ServerSocket server;

    connection = server.accept();

    FileInputStream fis = new FileInputStream("file.dll");

    DataInputStream dis = new DataInputStream(fis);

    DataOutputStream out = new DataOutputStream(connection.getOutputStream());

    int i = 0;

    while((i = dis.read()) != -1){

    out.write(i);

    out.flush();

    }

    ...

    而在Client中擷取Server傳來的資料

    Client(C#)

     //Client(C#)

    ...

    //Socket s 已完成連線

    NetworkStream networkStream = new NetworkStream(s);

    FileStream fs = new FileStream("file.dll", FileMode.Create);

    BinaryReader br = new BinaryReader(networkStream);

    BinaryWriter bw = new BinaryWriter(fs);

    int i = 0;

    while((i = br.Read()) != -1){

    bw.Write(i);

    bw.Flush();

    }

    ..

     

    但是資料擷取後,檔案大小一直不一樣,所以我又以Java寫了一個Client小程式

    Client(Java)

     //Client(Java)

    ...

    //Socket socket,已宣告,並完成連線

    DataInputStream dis = new DataInputStream(socket.getInputStream());

    FileOutputStream fos = new FileOutputStream("file.dll");

    int i = 0;

    while((i = dis.read()) != -1){

    fos.write(i);

    }

    fos.close();

     ...

     可完整擷取Server端的檔案,所以我不知道是不是我在寫C# Client端的方式弄錯了,能不能請幫忙解答一下,謝謝。

     

    2007年4月29日 上午 02:42

所有回覆

  • HI,

     

    bw.Flush();是不是可以拿到迴圈外面?

     

    tihs

     

     

    2007年4月29日 上午 07:24
  • Dear this:

    我將bw.Flush()拿到迴圈外面後,還是一樣,最後擷取到的資料大小不一樣。

    另外請教一個問題,如何得知是否以讀取到資料流的末端?

    因為我好像用錯br.Read() != -1了。

    Code Snippet

    NetworkStream networkStream = new NetworkStream(s);

    FileStream fs = new FileStream("file.dll", FileMode.Create);

    BinaryReader br = new BinaryReader(networkStream);

    BinaryWriter bw = new BinaryWriter(fs);

    int i = 0;

    while((i = br.Read()) != -1){

    bw.Write(i);

    bw.Flush();

    }

     

    2007年4月29日 下午 02:14