javascript - 在 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);
解决方案
推荐阅读
- python - 从另一个文件继承一个类
- algorithm - 选择性重复确认次数
- java - 如何组合类似的方法?
- sql - ORDER BY 在计算列上不能正常工作?
- database - 我们如何检查pgAdmin4中是否有另一个与我们的数据库同名的数据库?
- arrays - 如何使用 Codable 在 Swift 中获取 JSON 数组值
- sass - 使用 .sass 语法和 vuepress 呈现空白页面
- ajax - 如何在ajax数据表头laravel中传递jwt令牌
- python - 如何将列表项分组到不同序列长度的桶中?
- mysql - mysql 选择最后 3 个不同的行,但按 asc 排序