java socket传输数据问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:24:03
在我用的socket中,需要从服务器传输很多的数据给客户端。
客户端发送一个请求给服务器,然后服务器给予回应,会从服务器这的数据库中查找出相关的数据,并传输给客户端,这个我会。
现在麻烦的是:服务器从数据库中得到的是数据很多。
举个例子:我需要一些当月的每天写的一些工作日志的数据,比如:一张表中,我需要的数据有:apwork(上午的),pmwork(下午的),scheme(晚上的)。而当月会有多条数据,每条数据,我都需要这个3个字段的数据。
关于socket传输数据的代码我会,但是我传的都是一些String的字符串啊,而现在有这么多哦不同类型的数据,就不知道怎么弄了?
服务器到底是怎么来发送这些个数据,客户端又是如何来判断该条数据到底是哪天的,上午还是下午的,还是晚上的,都怎么做??
郁闷中……谢谢大家了啊!
socket可以传输map的吗?
map的传输是不是和传输String的一样的,直接放进去就行了吗?

找到办法了。String ss = apwork+"#"+pmwork+"#"+scheme;把ss传过去,在接收端用String str[] = ss.split("#");String apwork = str[0];String pmwork = str[1];String scheme = str[2];就可以取到了。
呵呵!辽远海相思说的办法也是可以的,不过使用byte[] time=new byte[10];
String stime="2009-10-31 12:00:00";
byte[] temp=stime.getByte();
for(int i=0;i<temp.length;i++){
time[i]=temp[i];
}
这个把String放进byte中时,是乱码的,不知道为什么?大家可以试试,呵呵!

可以这样哈,数据结构:
|--时间(50个字节)--||--上午数据长度(固定用8个字节)--||--上午数据--||--中午数据长度--||--中午数据--||--下午数据长度--||--下午数据--|

然后读取的时候先读50个字节的内容,然后把它转为字符串得到的就是时间,然后读8个字节的内容,把读到的内容转为数字就是上午的数据的总长度,假如是n,则继续读n个字节内容,转为字符串就是上午数据,然后继续读8个字节,转为数字……
以上只是一种数据结构,还可以有很多,你可以根据自己的实际情况来决定各个字节的长度。

再说写入的情况,把所有的字符串转化成固定长度的byte数组然后直接写入就行了。
byte[] time=new byte[10];
String stime="2009-10-31 12:00:00";
byte[] temp=stime.getByte();
for(int i=0;i<temp.length;i++){
time[i]=temp[i];
}
然后写入time,等到把所有数据写入完毕统一刷新

什么意思啊,你不是说Socket传输数据的代码你会吗,Socket基于Tcp/Ip协议,只能传数据流,及字节数组,你可以先把string转换成字节数组再传嘛。
关于判断数据的日期和上下午的问题也很好解决。你在服务器读取这些数据的时候一定是知道它的日期和上下午的,写一个string,最前面加上日期和上下午信息,后面跟上表中的实际数据即可。然后转换为字节数组传送给客户端。
在客户端,你把收到的数据还原为string类型,这样就得到了所有的信息(包括日期、上下午及实际数据)

用List存储时间段的数据,比如List apwork;

用Map存储这些时间段,map.put("apwork",apwork);

服务器端和客户端传输map,这样不就都解决了?

ObjectOutputStream ,Socket可以传输包装类的

转成json格式,然后客户端进