黑马程序员技术交流社区

标题: 关于socket传送数据问题 [打印本页]

作者: 刘小峰    时间: 2011-12-29 21:47
标题: 关于socket传送数据问题
本帖最后由 流氓l老醯 于 2011-12-30 13:46 编辑

怎么用Socket传送一个String型的数组啊,BufferedReader好像不行
作者: 冯祖焱    时间: 2011-12-29 21:53
本帖最后由 冯祖焱 于 2011-12-29 21:54 编辑

  1. String[] strs = new String[] { "str1", "str2" };

  2. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

  3. for(String str:strs){
  4.         bw.write(str);
  5.         bw.newLine();
  6.         bw.flush();
  7. }
复制代码

作者: lvwenwen88    时间: 2011-12-29 23:10
给你一段代码,不知道能不能解决你的问题
可以直接传字符串,也可以将字符串数组封装对象进行传输。
服务端代码:
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
        public static void main(String[] args) throws Exception{
                ServerSocket ss = new ServerSocket(9091);
                Socket s = ss.accept();
                System.out.println("new connection");
                ObjectInputStream oi = new ObjectInputStream(s.getInputStream());
                String [] arr = (String[]) oi.readObject();
                System.out.println(arr[0] + arr[1]);
        }
}
客户端代码:
import java.io.ObjectOutputStream;
import java.net.Socket;

public class Mysocket {
    public static void main(String[] args) throws Exception {
            Socket s = new Socket("localhost",9091);
            ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
            out.writeObject(new String[]{"123","232"});
            out.flush();
            out.close();
    }
}
作者: 罗全涛    时间: 2011-12-30 00:20
目前我也在看这个网络的视频,DatagramPacket在封包的时侯用的都是byte[]字节数组,
可以将你要发送的数据getBytes[]将它变成字节数组,再进行打包,发送。
作者: 马伟奇    时间: 2011-12-30 00:47

很简单:比如:
   String s="你好,我是好人".getBytes();
把字符串变成字节就可以传输了
作者: 刘小峰    时间: 2011-12-30 13:45
多谢各位啦{:soso_e183:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2