java - 如何在 Java Android 中查找对象的大小
问题描述
我是 android 和 python 的新手,我正在尝试在我的 android 客户端和 python 服务器之间建立 TCP 套接字连接。每次我在我的应用程序中滑动时,我都会将滑动运动的方向发送到服务器。
//java client
OutputStream output = client.getOutputStream();
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(output));
byte[] msg;
if(strings[1].equals("swipe"))
{
out.write(strings[1].getBytes());
out.flush();
//strings[0] contains the movement information in format of:
//xmovement_ymovement
//for example: 2.5365_8.5478
msg = strings[0].getBytes();
out.write(msg);
out.flush();
}
#python server
#the 1024 is a temporary number I just put in there
#because I don't know how to find the size of the data in the java client side
request_byte = client_socket.recv(1024)
print("reqeust_byte size: " + str(sys.getsizeof(request_byte)))
request = request_byte.decode()
print("Received " + request)
if request == "swipe":
movement_byte = client_socket.recv(1024)
print("movement_byte size: " + str(sys.getsizeof(movement_byte)))
movement_str = movement_byte.decode()
x_movement, y_movement = movement_str.split("_")
print("x: " + x_movement)
print("y: " + y_movement)
swipe(float(x_movement), float(y_movement))
当完成一个简单的按钮按下并发送单个数据时,代码工作正常,但是当我轻扫并且在短时间内将大量数据发送到服务器时,数据会混淆并且变得不可预测。
现在,正如这篇文章Receiving end of socket splits data when printing说的那样,我知道我需要构建一个描述消息的协议,但是在 Java 客户端,我无法获得我想要的数据大小发送,所以我被困在这里。
这篇文章在 Java 中,确定对象大小的最佳方法是什么?说我可以通过使用 java.lang.instrument 包找到对象的大小,但我无法在 android studio 中导入 java.lang.instrument.Instrumentation。有没有另一种方法可以在 android studio 中找到对象的大小?
解决方案
推荐阅读
- ios - 修复 iOS 15 UINavigationBar
- android - Kotlin - 事件前的 WorkManager 通知
- html - TailwindCSS - 将所有网格项目设置为相同的高度
- javascript - 尝试使用 axios post 请求上传文件
- java - Hibernate / Spring Data JPA 在尝试使用嵌套对象持久化父对象时偶尔会失败
- java - 在不获取实际实体的情况下查询外键字符串 ID
- javascript - 如何在 Firefox 和 Chrome 上突出显示文本时禁用“分享建议”弹出窗口
- json - JSON 字段名称可以以数字开头吗?
- python-3.x - 为什么在 Python3 中将 pool.apply_async 和 Process.start 与 multiprocessing.Array 一起使用时会得到不同的结果?
- python - 如何正确更新 Python 嵌套字典中列表类型的值?