小编bas*_*ndo的帖子

Rust 中的 TCP 连接

所以我试图更好地理解简单的 TCP 服务器如何在 Rust 中工作。假设我有下面的简单 TCP 服务器。

use std::io::Write;
use std::net::TcpListener;
use std::thread;

fn main() {
    let listener = TcpListener::bind("127.0.0.1:9123").unwrap();
    println!("listening started, ready to accept");
    for stream in listener.incoming() {
        thread::spawn(|| {
            let mut stream = stream.unwrap();
            stream.write(b"Hello World\r\n").unwrap();
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

服务器通过接受来自给定套接字的传入连接来工作。在生成所需线程后,您可以重新定义流变量,以便可以将其更改为您想要的任何内容。然后您可以随时写入该变量。

假设有一个如下所示的客户端:

use std::net::TcpStream;
//and any other imports that you need

fn main() {
    let stream = TcpStream::connect("127.0.0.1:9123").unwrap();
    //Then assume that you can read and write things back to the server
Run Code Online (Sandbox Code Playgroud)

我不明白的是每次建立连接时线程如何处理服务器。是不是就像设置多台服务器一样?如何处理进出服务器的数据包?您如何处理断开的连接?

tcp rust

3
推荐指数
1
解决办法
8057
查看次数

传递给函数的向量未被修改

所以我正在创建一个函数来获取向量的certatin元素并将它们存储到另一个向量中.每当我运行程序时,它会给出分段错误错误?为什么会发生这种情况,我如何解决问题,以免发生这种情况?

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void addition (vector <char> a, vector <string> b)
{
  for (int i = 0; i < a.size(); ++i)
  {
    if (a[i] == '3')
    {
      b.push_back("3");
    }
    if (a[i] == '4')
    {
      b.push_back("4");
    }
    if (a[i] == '+')
    {
      b.push_back("+");
    }
  }
}

int main()
{
  vector <char> v1 = {'3', '4', '+', '3', '4'};
  vector <string> v2;

  addition(v1, v2);
  cout << v2[0] << endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ function vector

0
推荐指数
1
解决办法
80
查看次数

标签 统计

c++ ×1

function ×1

rust ×1

tcp ×1

vector ×1