日期:2014-05-20  浏览次数:20732 次

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



------解决方案--------------------
还按字节发送啊,发送完文本,
发送一个标志位,再开始发送别一个文件,就是图片,
关键客户端与服务器端要同步,就是一个文件发送完毕,发送端再发一个标志位,表明这个文件已经结束,
比如

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(); // 文件结束
// 接收下一个文件


参考下