在做服务器测试时遇到这个问题,原本这段代码在web项目中,由于不方便,打算提出来写成python脚本直接放在服务器上,运行脚本即可发送测试数据到服务端,但是java的buffer与byte这种序列化方式在python中怎么实现呢?查找了很多资料也没能搞明白。
下面的java的接口代码:
/**
* 向某主机发送一段文本,并将主机的返回作为文本返回
*
* @param host
* 主机
* @param port
* 端口
* @param text
* 发送的内容
* @return 主机返回的文本
*/
public static String sendText(String host, int port, String text) {
StringBuilder sb = new StringBuilder();
int len = text.getBytes().length + Integer.SIZE / Byte.SIZE;
ByteBuffer bb = ByteBuffer.allocate(len);
bb.putInt(text.getBytes().length);
bb.put(text.getBytes());
bb.flip();
// 读取指定长度的字节数
byte[] bytes = new byte[len];
bb.get(bytes);
if (isValidIP(host)) {
sendip(host, port, bytes, Lang.ops(sb), 60*1000);
} else {
send(host, port, bytes, Lang.ops(sb), 60*1000);
}
return sb.toString();
}
题主给的代码不全,想要把代码逻辑用python重写一遍不现实,但在我看来这段Java代码写得也是有点问题的,前半部分像是要用nio,可后面又把buffer转成了byte,也不知道后面的send方法是用socket还是nio。
但是要用Python实现题主的代码功能还是很简单的。