服务器端:delphi使用Indy的TCPServer编写客 户 端:Android的Socket。——都是阻塞方式——目前碰到一个奇怪的问题,android向服务器发送数据,有时候是对的,但是大多数时候数据前面加了若干个"#FF",喵了个咪的,这些#FF那来的,实在纳闷!!!例如:发送数据“@AAA#”,服务器收到的却是“                @AAA#”,用16进制查看,前面空的字符全是#FF。下面归纳一下测试的现象:1. 模拟器测试没有这个问题,非常正常,真机测试就会出现(2台真机,一个2.3系统,一个4.0系统,都出现这个问题);2. 发送用“BufferedWriter”和“PrintWriter”都测试了,结果一样,无论哪个,发送的是String还是char[]都这样;3. 服务器端调试发现,前面的#FF的数量是变化的,第一次比较少,然后递增,到一定数量就会发送成功一次,然后又开始反复这种现象。泪奔啊~~~~~~求帮助!!!!!

解决方案 »

  1.   


    呃,补上代码:private Socket TCPSocket = null;
    private BufferedReader TCPIn = null;InetAddress ia = InetAddress.getByName(sHost);
    TCPSocket.connect(new InetSocketAddress(ia, iPort), 3000);
    TCPOut = new BufferedWriter(new OutputStreamWriter(TCPSocket.getOutputStream()));TCPOut.write("...");
    TCPOut.flush();
      

  2.   

    楼主用DataInputStream的readUTF
    DataOutputStream的writeUTF试试 看看没有问题了
      

  3.   

    to(sky254541843):安卓端使用Log抛出的即将write的数据正常,delphi端debug获得的数据就不正常了,将两边的数据全部转成一种编码方式(UTF-8,GB2312等等),都测试过,现象一样。无论android端使用哪种发送方式就是这样,write\println\writeutf 等等都一样的问题。很多次不正常,正常一次,再次很多次不正常,正常一次这样反复客户端使用delphi写了一个测试程序,没有这样的问题。看来还是delphi的Indy和Android的socket之间通讯有猫腻,继续含泪探索中...
      

  4.   

    开来lz真的急了,socket在Android上没弄过,表示同情!顶贴~~~