字符串是可以的,但内存中有的数据是不能用字符串表示的,也不能用char数组,如:大于128的字节(0xbb等),怎样处理呢,我不想把内存转化成字符串再发,那样对方接收到数据还要还原,还有最后发送的回车换行能去掉吗?请多指教。
代码如下:
import java.net.*;
import java.io.*;
public class TXClient
{
    public static void main(String[] args)
    {
        try
        {
    Socket echoClient = new Socket("102.23.163.196",9000);
            PrintWriter out = new PrintWriter(echoClient.getOutputStream(),true);
            BufferedReader in = new BufferedReader(new InputStreamReader(echoClient.getInputStream()));
            //****************************************
            String clientInput =   "AA";
            //在这里我想把内存中的一个字节内容是0xaa发送出去,对方接收到仍然是一个字节0xaa
            //字符串可以发出去,0xaa呢
            //****************************************
            String serverOutput;                        
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));        
            out.println(clientInput);
            serverOutput = in.readLine();
        }
            out.close();
            in.close();
            echoClient.close();
            System.out.println("test...");
        }
        catch(UnknownHostException e)
        {
            System.err.println("主机连接错误!");
            System.exit(1);
        }
        catch(IOException e)
        {
            System.err.println("I/0 error:" + e.getMessage());
            System.exit(1);
        }
    }
}

解决方案 »

  1.   

    不要用 BufferedReader,Reader是为了Unicode设计的。专门用来处理字符串。
    需要把对象放入stream传送则使用ObjectInputStream和ObjectOutputStream
    这个是为各种基本类型(int,long之类的)和支持序列化的对象设计的。
    直接用这个就好了
      

  2.   

    用byte数组和OutputStream啊.如果对方用的也是java的话,可以考虑楼上上的ObjectOutputStream
      

  3.   

    对, 不用 Reader/Writer 这个字符流,而是用 Stream 字节流, 所有数据当 byte 或者 int 处理。
      

  4.   

    谢谢各位,问题还没有解决,我是打算按字节发出去,但是我要把一个字符数组一包发出去而不是单字节循环,因为接收端已经做好,是用VC++做的;
    怎样才能发一个数组呢?麻烦大家帮我改改!
    发一个字节是可以的代码如下:import java.net.*;
    import java.io.*;
    public class TXClient {

    public static void main(String[] args)
    {
    try
    { Socket echoClient = new Socket("172.23.163.196",9000);
    DataOutputStream out=new DataOutputStream(echoClient.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(echoClient.getInputStream())); String serverOutput;
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    {
    //*************************************************************************
    //发送
    byte ss=-0x36;
    out.writeByte(ss);
    //*************************************************************************
    serverOutput = in.readLine();
    }
    out.close();
    in.close();
    echoClient.close();
    System.out.println("test...");
    }
    catch(UnknownHostException e)
    {
    System.err.println("连接错误");
    System.exit(1);
    }
    catch(IOException e)
    {
    System.err.println("I/0 error:" + e.getMessage());
    System.exit(1);
    }
    }}
      

  5.   

    BufferedReader in = new BufferedReader(new InputStreamReader(echoClient.getInputStream()));这行改为
    BufferedReader in = new BufferedReader(new InputStreamReader(new DataInputStream(echoClient.getInputStream())));