标签: stream

Dart 套接字监听不会等到完成

我想在一个函数中执行这些操作:
1-连接套接字2-发送查询3-监听数据4-返回数据

但是当我尝试套接字时。即使我将await 放在listen 函数上,它也不会等待。它说这不是未来,而是一个 Stream 对象,但我对 Streams 不了解,所以我被困在这里。我怎样才能按照我说的去做呢?

static sendQuery({required String query,args, dimension}) async {
if(args != null)
  args.forEach((element) => query = query.replaceFirst("?", element));

String ip = shared.getData("remote_ip");
int port = shared.getData("remote_port");
String data =  "";
await Socket.connect(ip, port,timeout: Duration(seconds: 5)).then((soket) {
  soket.write(query);
  soket.listen((Uint8List buffer) async {
    String _buffer = String.fromCharCodes(buffer);
    data += _buffer;
  },
  onDone: () {});
});

print("Data has returned. Length of data: ${data.length}");
return data;}
Run Code Online (Sandbox Code Playgroud)

sockets future stream dart flutter

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

将字符串、列表的映射连接到不包括字符串的单个列表中

我有一个Map<String, List<MyObject> myMap。如何将所有 List 值连接到一个List<MyObject>(不包括 String 键)?

我尝试过这个

List<MyObject> list = new ArrayList<MyObject>(myMap.values())
Run Code Online (Sandbox Code Playgroud)

但这不适用于集合。

还考虑过迭代地图并将每个列表加入到新列表中,但希望有更好的方法。

java stream collectors

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

为什么我无法使用 .forEach() 打印对象?

我正在尝试使用流按国籍对我的对象进行分组并将其打印出来。
但它说:“无法解析方法'println”

class Person {

    private String name;
    private int age;
    private String nationality;

public static  void groupByNationality(List<Person> people) {
     people
        .stream()
        .collect(Collectors.groupingBy(Person::getNationality))
        .forEach(System.out::println);
    }
Run Code Online (Sandbox Code Playgroud)

java list stream

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

是否有一种 FuturesOrdered 替代方案可以一一产生结果?

在 Rust 中,我有一堆想要并行执行的异步函数。处理这些函数结果的顺序很重要。我还想在这些函数可用时检索它们的结果。

\n

让我不好解释一下。

\n

以下是 的描述FuturesOrdered

\n
\n

这个“组合器”类似于 FuturesUnordered,但它在 future 集合之上强加了一个顺序。虽然集合中的 future 将并行完成\n,但结果将仅按其原始 future 添加到队列的顺序返回。

\n
\n

到目前为止,一切都很好。现在看这个例子:

\n
let mut ft = FuturesOrdered::new();\nft.push(wait_n(1)); // wait_n sleeps\nft.push(wait_n(2)); // for the given\nft.push(wait_n(4)); // number of secs\nft.push(wait_n(3));\nft.push(wait_n(5));\nlet r = ft.collect::<Vec<u64>>().await;\n
Run Code Online (Sandbox Code Playgroud)\n

由于FuturesOrdered\xc2\xa0await 直到所有future 都完成;这就是我得到的:

\n
|--|        ++\n|----|      ++\n|--------|  ++\n|------|    ++\n|----------|++\n            ++-> all results available here \n
Run Code Online (Sandbox Code Playgroud)\n

这就是我要的:

\n
|--|++\n|----|++\n|--------|++\n|------|    ++\n|----------|  ++\n               \n
Run Code Online (Sandbox Code Playgroud)\n

换句话说; 我要等待下一个未来;随着剩余的期货不断地完成。另请注意,即使任务#4 在任务#3 之前完成;由于最初的订单,它是在#3 之后处理的。

\n

我怎样才能获得像这样同时执行的期货流?我希望有这样的事情: …

future stream rust async-await rust-tokio

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

在 C++ 中用精确的字节数填充流

const size_t bytes我有一个流,我需要多次用文本 ( )填充精确大小( const char * filler = "Something") ,直到达到字节大小。

像这样:SomethingSomethingSomethingSomethingSome,如果没有更多可用字节,则可以将其截断,但它始终必须是精确的大小。例如字节为 30

    const size_t bytes = 30;
    const char * text = "Something";

    int x = bytes / strlen(text);

    for (int j = 0; j < x; j++)
    {
        for (int i = 0; i < strlen(text); i++)
        {
            stream << text[i];
        }
    }
Run Code Online (Sandbox Code Playgroud)

像上面这样,我只能用未截断的单词填充流,而不是:SomethingSomethingSomethingSom(这正好是 30)

我该如何修改这段代码?谢谢你!

c++ string stream fill

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

使用 Stream API 将谓词链接为一个

我有一个谓词列表 ( List<Predicate<String>>),我想使用or方法将其链接到一个谓词中。我如何使用 Stream API 来实现这一目标?

java predicate stream

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

Java 流的使用

我有一个用例,我想根据某些条件修改列表中的某些条目,并保留其余条目不变。为此,我正在考虑使用 java 流,但我找不到可行的解决方案。我知道使用filterandmap不会起作用,因为它会过滤掉不满足条件的元素。有什么我可以用的吗?

例子 -

List<Integer> a = new ArrayList<>();
a.add(1); a.add(2);

// I want to get square of element if element is even 
// Current solution 
List<Integer> b = a.stream().filter(i -> i % 2 == 0).map(i -> i * i).collect(Collectors.toList());

// This outputs - b = [4]
// But I want - b = [1, 4]
Run Code Online (Sandbox Code Playgroud)

java stream

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

java null指针异常

我得到java.lang.NullPointerExceptionwhile ((len = in.read(buf , 0 , buf.length)) >= 0)在下面的方法:

public void copy(String  src, File dst) throws IOException {

  InputStream in = getClass().getResourceAsStream(src); 
        OutputStream out = new FileOutputStream(dst);

        byte[] buf = new byte[1012];
        int len;
        while ((len = in.read(buf , 0 , buf.length)) >= 0) {
            out.write(buf, 0, len);
            buf = null;
        }
        in.close();
        out.close();
    }
Run Code Online (Sandbox Code Playgroud)

我没有得到它.如果我得到解决方案,我会很感激.谢谢你提前.......

java bytearray stream

-1
推荐指数
1
解决办法
909
查看次数

从InputStream读取时丢失的第一个字符

我有以下代码:

public class Interface {

    public void exec(){
        try {
            _inputStream.read();
            BufferedReader br = new BufferedReader( new InputStreamReader( _inputStream ));
            System.out.println( br.readLine() );
        } catch (IOException e) {
        }

    }

    public void setInputStream( InputStream inputStream ){
        _inputStream = inputStream;
    }

    private InputStream _inputStream;

}

public class Run {

    public static void main(String[] args) {
        Interface ui = new Interface();
        ui.setInputStream( new ByteArrayInputStream( "2 4 N".getBytes( Charset.defaultCharset() ) ) );
        ui.exec();
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我运行这段代码时,我打印出来的都是

" 4 N"
Run Code Online (Sandbox Code Playgroud)

第一个角色已经丢失.我的信息流发生了什么,我该怎么做才能阻止它?

java stream

-1
推荐指数
1
解决办法
1065
查看次数

德尔福:传输图像

Delphi 2010

我通过自定义TCP套接字控件传输图像使用UTF-8

客户端

var
TSS: TStringStream;
STR :String;
JPG:TJPEGImage;
BMP:TBitmap;
begin
Try
BMP.LoadFromFile('C:\1.bmp');

JPG.Assign(BMP);
JPG.CompressionQuality:=80;
JPG.Compress;

TSS:=TStringStream.Create;
JPG.SaveToStream(TSS);

STR:=TSS.DataString;

MyTCPSocket.SendString(STR);


finally
BMP.free;
JPG.free;
TSS.free;
end;
end;
Run Code Online (Sandbox Code Playgroud)

服务器端

Var
TSS: TStringStream;

TSS:=TStringStream.Create;
TSS.WriteString(STR);
TSS.SaveToFile('C:\2.jpg');
Run Code Online (Sandbox Code Playgroud)

这段代码在同一台PC上运行很棒.

当我将图像发送到使用不同编码的其他PC接收图像但我在数据中看到许多错误字符"?????"时的问题

我认为当TStringStream将字节写入文件时,它无法将unicode字符转换为字节,因此它看起来像"?"

任何想法都非常感谢

delphi image stream transfer

-1
推荐指数
1
解决办法
2704
查看次数