java socket丢失数据_【未解决问题】关于Socket编程:客户端、服务端对象流交互数据丢失的问题...

在Java Socket编程中,遇到客户端和服务端对象流交互时数据丢失的问题。尝试过修改中文编码、在不同机器上部署、导师协助编写代码等解决方案,但问题仍未解决。尽管Socket技术相对老旧,但在很多现代技术底层依然存在,该问题激发了进一步学习和研究的决心。
摘要由CSDN通过智能技术生成

问题引入:

服务端将一个用户对象发送给客户端,客户端接收到的对象数据丢失。

(一)问题出处

客户端:

//客户端请求代码片:

try {

//Message 为封装的消息类型,由于往返的对象类型可能不是一种

//其两个属性为 “封装的对象” 和 “请求类型”

//MessageType为一个接口,里面添加一些常量,供服务端识别用户请求的动作

Message message = new Message(user,MessageType.MESSAGE_BUY);

//oos为ObjectOutputStream类型的一个全局引用,指向对象输出流对象

oos.writeObject(message);

oos.flush();

} catch (Exception e) {

e.printStackTrace();

}

服务端:

//服务端代码片:

//ois为ObjectInputStream类型的一个全局引用,指向对象输入流对象

Message message = (Message) ois.readObject();

//省略其它请求类型...

case MessageType.MESSAGE_BUY: {

//获得此用户对象

User user = (User) message.getDate();

//之后将此用户变更的信息写入文件等操作

Shop.addUserProduct((User) message.getDate());

oos.flush(

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值