首页 > 解决方案 > 在 react-native 中从客户端 TCP IP 读取消息

问题描述

我的应用程序面临一个奇怪的问题我能够作为客户端连接到 TCP IP 这是我在 Javascript 中使用的代码:

const cn = TcpSocket.createConnection({
  port: 27015,
  host: '192.168.0.10',
  localAddress: '192.168.0.11',
});
cn.on('data', res => {
  cn.write('\x80\x00\x00');
});
cn.on('error', function(error) {
  console.log('imce error: ', error);
});
cn.on('close', function() {
  console.log('Connection closed!');
});

但是当我收到来自服务器的消息并且对于每条消息我应该发回这样的确认时出现问题cn.write('\x80\x00\x00'); 它一直到某个地方然后我没有收到来自服务器的消息,而奇怪的部分在这里我制作了另外两个非常好的脚本,一个在 Python 中,一个在 PHP 中,它们都具有相同的逻辑含义,建立连接然后写入数据作为客户端,但这里唯一的区别是,当我读取数据时,我使用无限循环读取它,您可以看到这两个示例,现在我想知道在 Javascript中是否有机会 this cn.on('data', with callback here)使其在两个示例中都像每次有新消息时都将其存储在一个变量中,然后也在 Javascript 中运行无限循环。

Python 示例:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('192.168.0.15', 27015)
print(sys.stderr, 'connecting to %s port %s' % server_address)
sock.connect(server_address)
full_msg = ''
try:
    # Send data
    message = '\x06\x01\x0C\x19\x40\x49\x07\x56\x04\x00\x00\x00\x00\x04\x00'
    print(sys.stderr, 'sending amount "%s"' % message)
    sock.sendall(message)

    while True:
            msg = sock.recv(1024)
            if len(msg) <= 0:
                    break
            full_msg += msg
            ackmsg = '\x80\x00\x00'
            print(sys.stderr, 'sending ack "%s"' % message)
            sock.sendall(ackmsg)
finally:
    print(sys.stderr, 'closing socket')
sock.close()

PHP 示例:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if(!is_resource($socket)) onSocketFailure("Failed to create socket");

socket_connect($socket, "192.168.0.10", 27015) or onSocketFailure("Failed to connect to chat.stackoverflow.com:6667", $socket);

socket_write($socket, "\x06\x01\x0C\x19\x40\x49\x07\x56\x04\x00\x00\x00\x00\x04\x00");

while(true) {
    $line = socket_read($socket, 1024);
    error_log(strlen($line));
    if(strlen($line) <= 0) {
        break;
    }
    error_log($line);
    socket_write($socket, "\x80\x00\x00");

}

socket_close($socket);

标签: javascriptpythonreact-nativetcptcpclient

解决方案


推荐阅读