您的位置:程序门 -> java -> j2se / 基础类



请问:socket同时发送文本和图片的问题。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问:socket同时发送文本和图片的问题。[已结贴,结贴人:ljbatustc]
发表于:2007-03-28 17:08:06 楼主
还是刚才问过那个lan里的c/s通信问题。
现在想把文本和图片一起发送。
就是服务器一次从数据库里面查出来的信息有文本也有图片,不过图片是本机地址,服务器根据图片地址取出图片,然后和前面的文本信息一起发送给客户端。
之前只读文本的时候用getinputstream就可以了,现在文本后面跟了一个图片,通信变得复杂很多了,请问用什么方法实现比较好呢?

发表于:2007-03-28 17:09:391楼 得分:0
发送文本和发送图片单独做实现了,但是合并一起就不会了,aoao,各位多多帮忙啊,hoho
发表于:2007-03-28 18:10:572楼 得分:0
想了一个土办法,文本也都转为byte[],   和图片和并为一个大的byte[]   buffer.   到了客户端再拆分。
omg,   效率很垃圾啊。
谁有好办法?
发表于:2007-03-28 21:51:173楼 得分:0
封装到一个类里.
class   trans   implements   serializable
{
        public   image   image;
        public   string   text;
}
发表于:2007-04-02 17:21:404楼 得分:0
具体点?
谢谢!
发表于:2007-04-02 23:30:375楼 得分:0
还按字节发送啊,发送完文本,
发送一个标志位,再开始发送别一个文件,就是图片,
关键客户端与服务器端要同步,就是一个文件发送完毕,发送端再发一个标志位,表明这个文件已经结束,
比如

client   :
  string   data   =null;
  datainputstream   din   =   new   datainpputstream(mysocket.getinputstream();
  dataoutputstream   dout   =   new   dataoutputstream(mysokcet.getoutputstream());
  bufferedinputstream   bin   =   new   bufferedinputstream(new   fileinputstream(file   file));
    dout.writeutf(file.getname());//   通知接收端文件名
    dout.writelong(file.length());//通知拉收端文件大小
  while((data   =   bin.readline())   !=   null)
  {
                  dout.writeutf(data);
                  dout.writeint(0);
    }
                  dout.writeint(1);       //   文件结束,输出标志位
      //   发送下一个文件


server:

datainputstream   din   =   new   datainpputstream(mysocket.getinputstream();
  dataoutputstream   dout   =   new   dataoutputstream(mysokcet.getoutputstream());
  bufferedoutputstream   bin   =   new   bufferedoutputstream(
                                                                  new   fileinputstream(din.readutf()));
    long   filelen   =   din.readlong();//文件大小
    int   temp;
  while((data   =   din.readutf())   !=   null)
  {
                  bin.writeutf(data);
                  if((temp   =   dint.readint())   ==   1)
                    break;
    }
                    bin.close();   //   文件结束
      //   接收下一个文件


参考下


发表于:2007-04-02 23:33:446楼 得分:20
还按字节发送啊,发送完文本,
发送一个标志位,再开始发送别一个文件,就是图片,
关键客户端与服务器端要同步,就是一个文件发送完毕,发送端再发一个标志位,表明这个文件已经结束,
比如

client   :
  string   data   =null;
  datainputstream   din   =   new   datainpputstream(mysocket.getinputstream();
  dataoutputstream   dout   =   new   dataoutputstream(mysokcet.getoutputstream());
  bufferedinputstream   bin   =   new   bufferedinputstream(new   fileinputstream(file   file));
    dout.writeutf(file.getname());//   通知接收端文件名
    dout.writelong(file.length());//通知拉收端文件大小
  while((data   =   bin.readline())   !=   null)
  {
                  dout.writeutf(data);
                  dout.writeint(0);
    }
                  dout.writeint(1);       //   文件结束,输出标志位
      //   发送下一个文件


server:

datainputstream   din   =   new   datainpputstream(mysocket.getinputstream();
  dataoutputstream   dout   =   new   dataoutputstream(mysokcet.getoutputstream());
  bufferedoutputstream   bin   =   new   bufferedoutputstream(
                                                                  new   fileinputstream(din.readutf()));
    long   filelen   =   din.readlong();//文件大小
    int   temp;
  while((data   =   din.readutf())   !=   null)
  {
                  bin.writeutf(data);
                  if((temp   =   din.readint())   ==   1)
                    break;
    }
                    bin.close();   //   文件结束
      //   接收下一个文件


参考下
发表于:2007-04-11 09:54:037楼 得分:0
frilly(秋◆水),多谢!


快速检索

最新资讯
热门点击