作者andykid (宗一郎)
站内java
标题Re: [问题] socket传送数值出错
时间Thu Jan 17 17:42:01 2008
问题已经解决了...> <
学长说是因为每次read()都要用一个frame
所以做了多次的read()
造成有资料遗失...
所以才会变成读取到的值都变成63
所以我改成用String做read write
把所有数值接在一起一次输出一次接收...
谢谢大家的回应
经过这次又学到一招了
※ 引述《superlubu (叔叔你人真好)》之铭言:
: : rbw.write(controla[i+1]);
: : gui.border=br.read();
: : → andykid:我的值都可以正常读入..除了height..每次都是63 01/17 12:56
: 你误会了 write(int) 和 int read() 的用法,它们是用来写/读 character
: 而不是 integer 的,请看以下:
: import java.io.*;
: public class Test {
: public static void main(String[] argv) throws Exception {
: PipedOutputStream o = new java.io.PipedOutputStream();
: PipedInputStream i = new java.io.PipedInputStream(o);
: BufferedWriter w = new BufferedWriter(new OutputStreamWriter(o));
: w.write(100000);
: w.flush();
: o.flush();
: w.close();
: o.close();
: System.out.println("read: " + i.read());
: }
: }
: 结果出来仍然会是 63, 所有 write(int b) 中, b 值比 127 大的话,就会变成 63 的了
: 注: charset 问题,当 OutputStreamWriter 设成 charset = UTF-8,比 65535 大的数
: 便会当成 0
: 附带一提,正常来说玩这种 primitive data transfer,java.io.DataInputStream 和
: java.io.DataOutputStream 是好物
--
签名档现在都要放相簿
谜一般的相簿
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.2.165