gpt4 book ai didi

rust - 即使我正在发送换行符,TCP 回显服务器也从不回复

转载 作者:行者123 更新时间:2023-11-29 08:34:25 24 4
gpt4 key购买 nike

我正在尝试按照 Tokio 客户端教程编写一个客户端,该客户端与回显服务器对话,回显服务器在末尾发送回带有换行符的响应。这是我所拥有的:

extern crate futures;
extern crate tokio_core;
extern crate tokio_io;

use std::net::SocketAddr;
use std::io::BufReader;
use futures::Future;
use tokio_core::reactor::Core;
use tokio_core::net::TcpStream;

fn main() {
let mut core = Core::new().expect("Could not create event loop");
let handle = core.handle();
let addr: SocketAddr = "127.0.0.1:9999".parse().expect("Could not parse as SocketAddr");
let socket = TcpStream::connect(&addr, &handle);
let request = socket.and_then(|socket| {
tokio_io::io::write_all(socket, &[65, 12])
});
let buf = vec![];
let response = request.and_then(|(socket, _request)| {
let sock = BufReader::new(socket);
tokio_io::io::read_until(sock, b'\n', buf)
});
let (_socket, data) = core.run(response).unwrap();
println!("{}", String::from_utf8_lossy(&data));
}

我期望这会打印“A\n”,因为 A 的 ASCII 代码是 65,换行符是 12。我的服务器是使用此命令的 netcat

ncat -l 9999 --keep-open --exec "/bin/cat"

这似乎取决于在核心上运行响应 future 。我在这里缺少什么?

最佳答案

the ASCII code for A is 65 and newline is 12

不,不是:

 The decimal set:

0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel
8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si
16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb
24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us
32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '
40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /
48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7
56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?
64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G
72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O
80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W
88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _
96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g
104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del

A 是 65,但换行符是 10

也就是说,首先没有理由在这里使用十进制值。相反,使用字节文字:

tokio_io::io::write_all(socket, b"A\n")

关于rust - 即使我正在发送换行符,TCP 回显服务器也从不回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47897022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com