请问在JAVA中是通过什么方式实现SOCKET编程的?我看了个例子,上面这样写的:
out = new PrintWriter(socket.getOutputStream(),true);
out.println(str);
JAVA中SOCKET编程发送数据的实现方法后面的STRING类型,难道我只能把组合好的BYTE[]转成STRING发送出去吗?这样对吗?

解决方案 »

  1.   

    ObjectOutputStream 可以发送String
      

  2.   

    我不是要发string,而是要发byte[],只能发string吗?
      

  3.   

    PrintWriter是包装过的OutputStream,你直接用Outputstream就是发送byte的。
    (初学JAVA,还是等高手来确定下)
      

  4.   

    socket.getOutputStream()  返回一个OutputStream
    看一下OutputStream的API,直接 .write()方法就行了!
      

  5.   

    这是一个用Socket建立个最简单的聊天程序Java、Socket、网络编程、聊天/*一个作为Server*/
    import java.io.*;
    import java.net.*;
    public class MyServer{
     public static void main(String[] args)
          throws IOException{
      ServerSocket s=new ServerSocket(8658);
      System.out.println("开始:"+s);
      try{
       Socket socket=s.accept();
       try{
        System.out.println("连接接受"+socket);
        BufferedReader in=new BufferedReader(new InputStreamReader
          (socket.getInputStream()));
        PrintWriter out=new PrintWriter(new BufferedWriter(
         new OutputStreamWriter(socket.getOutputStream())),true);
        while(true){
         String str=in.readLine();
         if(str.equals("q")) break;
         System.out.println("对方说:"+str);
         BufferedReader is=new BufferedReader(new InputStreamReader(System.in));
         String input=new String();
         input=is.readLine().trim();
         out.println(input);
         System.out.print("我说:");
         out.flush();
        }
       }
       finally{
        System.out.println("关闭....");
        socket.close();
       }
      }
      finally{
       s.close();
      }
     }
    }/*一个作为Client*/
    import java.io.*;
    import java.net.*;
    public class MyClient{
     public static void main(String[] args)
       throws IOException{
      InetAddress addr=InetAddress.getByName("127.0.0.1");
      System.out.println("地址="+addr);
      Socket socket=new Socket(addr,8658);
      try{
       System.out.println("socket="+socket);
       BufferedReader is=new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
       for(;;){
        System.out.print("我说:");
        String input=new String();
        input=is.readLine().trim();
        out.println(input);
        if(input.equals("q")) break;
        BufferedReader in=new BufferedReader(new InputStreamReader
            (socket.getInputStream()));
         String str=in.readLine();
        System.out.println("对方说:"+str);
        out.flush();
       }  }
      finally{
       System.out.println("关闭");
       socket.close();
      }
     }
    }
      

  6.   

    socket.getOutputStream(),这个是从Socket返回的字节流,
    在这个基础上,你可以包装任意的输出流类,来实现你需要的功能,
    传送字节数组,
    DataOutputStream类
    write(byte[] b, int off, int len) 
              将指定字节数组中从偏移量 off 开始的 len 个字节写入基础输出流。