在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ python如何實現(xiàn)如下接口?

python如何實現(xiàn)如下接口?

在做服務(wù)器測試時遇到這個問題,原本這段代碼在web項目中,由于不方便,打算提出來寫成python腳本直接放在服務(wù)器上,運行腳本即可發(fā)送測試數(shù)據(jù)到服務(wù)端,但是java的buffer與byte這種序列化方式在python中怎么實現(xiàn)呢?查找了很多資料也沒能搞明白。
下面的java的接口代碼:
/**

 * 向某主機發(fā)送一段文本,并將主機的返回作為文本返回
 * 
 * @param host
 *            主機
 * @param port
 *            端口
 * @param text
 *            發(fā)送的內(nèi)容
 * @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();
    
    // 讀取指定長度的字節(jié)數(shù)
    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();
}
回答
編輯回答
避風(fēng)港

題主給的代碼不全,想要把代碼邏輯用python重寫一遍不現(xiàn)實,但在我看來這段Java代碼寫得也是有點問題的,前半部分像是要用nio,可后面又把buffer轉(zhuǎn)成了byte,也不知道后面的send方法是用socket還是nio。
但是要用Python實現(xiàn)題主的代碼功能還是很簡單的。

向某主機發(fā)送一段文本,并將主機的返回作為文本返回

# -*- coding: utf-8 -*-
from socket import *


def send(host, port, message):
    client = socket(AF_INET, SOCK_STREAM)
    client.connect((host, port))

    client.sendto(bytes(message, encoding='utf-8'), (host, port))
    b_result, addr = client.recvfrom(2048)

    client.close()

    return b_result.decode()
    pass


if __name__ == '__main__':
    result = send('127.0.0.1', 12000, 'hello')
    print(result)
2017年5月22日 04:03