小编Mar*_*cel的帖子

PlainDatagramSocketImpl (IOException: 不允许操作)

我在使用 DatagramSockets 时遇到以下问题:

java.io.IOException: Operation is not permitted.
    at java.net.PlainDatagramSocketImpl.send(Native Method)
    at java.net.DatagramSocket.send(DatagramSocket.java:693)
Run Code Online (Sandbox Code Playgroud)

异常随机发生,我真的看不到模式。这让我更难调试它。

尽管如此,我怀疑当我发送大量数据时它会更频繁地发生。

我有多个线程通过这个套接字发送,但这应该不是问题,因为我读过 Java 套接字是线程安全的。

有人能告诉我什么时候以及在什么条件下可以抛出这样的异常吗?

这是我的基本网络代码:

package de.oompf.netwrk;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

class Server implements Runnable {

    private final EventBus bus;
    private final Thread serverThread;
    private final DatagramSocket socket;

    Server(EventBus bus) throws SocketException {
    this.bus = bus;
    serverThread = new Thread(this, "Server Thread");
    socket = getBoundSocket();
    socket.setSoTimeout(2400);
    }

    private static DatagramSocket getBoundSocket() throws SocketException {
    for (int port : Configuration.getPortList()) {
        try …
Run Code Online (Sandbox Code Playgroud)

java sockets udp network-programming

5
推荐指数
1
解决办法
5344
查看次数

在 Rust 中迭代文件字节的更快方法是什么?

我是 Rust 的新手,我正在尝试想出一个简单的备份程序。第一步,文件被分解成可变长度的块(通过内容定义的分块)。

为此,我必须逐字节读取文件。不幸的是,我发现这个过程非常缓慢。随着dd我能够以高达350 MIB读取/秒。尽管如此,使用以下 Rust 代码我只能得到大约 45 MiB/s。(我省略了那里的所有分块内容。

我正在阅读的文件大小约为 7.7 GiB。

// main.rs


use std::fs::File;
use std::io::BufReader;
use std::io::{Read, Bytes};
use std::time::{Instant, Duration};

fn main() {
    let file = File::open("something_big.tar").expect("Cannot read file.");
    
    let mut buf = BufReader::new(file);

    let mut x = 0u8;

    let mut num_bytes = 0usize;

    let t1 = Instant::now();

    for b in buf.bytes() {
        match b {
            Ok(b) => {
                x += b;
                num_bytes += 1;
                // chunking stuff omitted
            }, …
Run Code Online (Sandbox Code Playgroud)

file rust

2
推荐指数
1
解决办法
177
查看次数

标签 统计

file ×1

java ×1

network-programming ×1

rust ×1

sockets ×1

udp ×1