标签: flush

你如何刷新Python套接字?

我用Python编写了一个服务器,用于以"Header:Message"的形式向客户端发送数据

我希望能够单独发送每条消息,以便客户端需要执行最少的工作才能读取"标题"和"消息"

不幸的是,我无法弄清楚如何正确刷新python套接字,所以当我有多个发送快速连续执行时,消息在套接字缓冲区中被集中在一起并作为一个大块发送.

例:

服务器发送...

socket.send ("header1:message1")
socket.send ("header2:message2")
socket.send ("header3:message3")
Run Code Online (Sandbox Code Playgroud)

客户端收到..."header1:message1header2:message2header3:message3"

我想收到三条消息

header1:message1
header2:message2
header3:message3
Run Code Online (Sandbox Code Playgroud)

我需要一种方法在每次发送后进行刷新

python sockets flush

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

没有read()清空或"刷新"文件描述符?

(注意:这不是如何冲洗的问题write().这是它的另一端,可以这么说.)

是否可以清空包含要在其中读取数据的文件描述符不必使用read()它?您可能对数据不感兴趣,因此读取它们会浪费您可能更好地使用的空间和周期.

如果在POSIX中不可能,那么任何操作系统都有任何不可移植的方法吗?

更新:请注意,我在谈论文件描述符,而不是流.

c flush file-descriptor

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

PHP错误:ob_flush()[ref.outcontrol]:无法刷新缓冲区.没有缓冲区要冲洗

有人可以保存这两个文件并运行它们并告诉我为什么我收到错误"ob_flush()[ref.outcontrol]:无法刷新缓冲区.没有缓冲区要刷新".我试着用Google搜索,它说我必须使用ob_start(); 但是当我这样做时,它不会逐行打印,而是在完成后从FOR循环返回整个对象.我是PHP的新手,所以我不知道还有什么地方要看..

test_process.php

// This script will write numbers from 1 to 100 into file
// And sends continuously info to user
$fp = fopen( '/tmp/output.txt', 'w') or die('Failed to open');
set_time_limit( 120);
ignore_user_abort(true);

for( $i = 0; $i < 100; $i++){
    echo "<script type=\"text/javascript\">parent.document.getElementById( 'foo').innerHTML += 'Line $i<br />';</script>";
    echo str_repeat( ' ', 2048);
    flush();
    ob_flush();
    sleep(1);
    fwrite( $fp, "$i\n");
}

fclose( $fp);
Run Code Online (Sandbox Code Playgroud)

main.html中

<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript" charset="utf-8"></script>

        <style type="text/css" media="screen">
            .msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid}
            .new{ …
Run Code Online (Sandbox Code Playgroud)

php ajax flush while-loop

12
推荐指数
2
解决办法
2万
查看次数

当用户不使用"安全删除硬件"时,如何确保文件永久保存在USB上?

当我在delphi应用程序中的USB上保存文件时,如果没有执行"安全删除硬件"(特别是忘记使用),如何确保文件真正(永久)保存在USB上?
告诉我们的客户使用Windows功能"安全删除硬件"不起作用.
是否有一个Windows API命令来刷新缓冲区,以便所有数据永久写入USB驱动器?

windows delphi usb winapi flush

11
推荐指数
2
解决办法
3921
查看次数

PHP Flush()无法在Chrome中运行

我偶然发现了这个功能,它承诺可以在IE,FF和Chrome上运行.但它在Chrome中不起作用.有工作吗?

function buffer_flush(){

    echo str_pad('', 512);
    echo '<!-- -->';

    if(ob_get_length()){

        @ob_flush();
        @flush();
        @ob_end_flush();

    }

    @ob_start();
}
Run Code Online (Sandbox Code Playgroud)

php buffer google-chrome flush

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

使用VBA刷新在Excel中对VBProject.VBComponents所做的更改

我一直在Excel中遇到一些奇怪的怪癖,同时以编程方式删除模块,然后从文件中重新导入它们.基本上,我有一个名为VersionControl的模块,它应该将我的文件导出到预定义的文件夹,并根据需要重新导入它们.这是重新导入的代码(下面介绍了它的问题):

Dim i As Integer
Dim ModuleName As String
Application.EnableEvents = False
With ThisWorkbook.VBProject
    For i = 1 To .VBComponents.Count
        If .VBComponents(i).CodeModule.CountOfLines > 0 Then
            ModuleName = .VBComponents(i).CodeModule.Name
            If ModuleName <> "VersionControl" Then
                If PathExists(VersionControlPath & "\" & ModuleName & ".bas") Then
                    Call .VBComponents.Remove(.VBComponents(ModuleName))
                    Call .VBComponents.Import(VersionControlPath & "\" & ModuleName & ".bas")
                Else
                    MsgBox VersionControlPath & "\" & ModuleName & ".bas" & " cannot be found. No operation will be attempted for that module."
                End If
            End If
        End If …
Run Code Online (Sandbox Code Playgroud)

memory version-control excel vba flush

11
推荐指数
1
解决办法
7429
查看次数

强制Node.js刷新对子进程的写入

我生成一个像这样的子进程:

var child = require('child_process');
var proc = child.spawn('python', ['my_script.py', '-p', 'example']);
Run Code Online (Sandbox Code Playgroud)

我还设置了一些数据处理:

proc.stdin.setEncoding('utf8');
proc.stdout.setEncoding('utf8');
proc.stderr.setEncoding('utf8');

proc.stdout.on('data', function (data) {
  console.log('out: ' + data);
});

proc.stderr.on('data', function (data) {
  console.log('err: ' + data);
});

proc.on('close', function (code) {
  console.log('subprocess exited with status ' + code);
  proc.stdin.end();
});
Run Code Online (Sandbox Code Playgroud)

我的Python脚本从stdin每行读取行并执行一些操作并打印到stdout.它在shell中工作正常(我写了一行,我立即获得输出)但是当我在Node中执行此操作时:

for (var i = 0; i < 10; i++) {
  proc.stdin.write('THIS IS A TEST\n');
}
Run Code Online (Sandbox Code Playgroud)

我一无所获.

我必须修复它调用,proc.stdin.end()但这也终止了子进程(我希望保留在后台,流数据).

我还触发了一个刷新填充缓冲区的大量写入,但这不是一个真正的选择.

有没有办法手动刷新流?

stdin flush stream node.js

11
推荐指数
1
解决办法
4950
查看次数

刷新Perl STDIN缓冲区

有没有办法清除Perl中的STDIN缓冲区?我的程序的一部分有很长的输出(有足够的时间让某人输入几个字符)并在输出之后我要求输入,但是如果在输出期间输入了字符,它们将被"添加"到输入中输入的任何内容部分.这是我的问题的一个例子:

for(my $n = 0; $n < 70000; $n++){
   print $n . "\n";
}
chomp(my $input = <STDIN>);
print $input . "\n";
Run Code Online (Sandbox Code Playgroud)

输出将包括从for循环输出期间输入的任何字符.我怎么能禁用STDIN或刷新STDIN缓冲区(或任何其他方式不允许额外的字符在调用之前插入STDIN)?

perl buffer stdin flush

10
推荐指数
1
解决办法
6947
查看次数

std :: endl崩溃使用MinGW编译的Windows 8

我有3台计算机,其中两台使用Windows 8.使用最新版本的MinGW的g ++(4.8.1-4),我的hello world程序会在我在Windows 8计算机上编译和运行时冻结,但不会在Windows 7中运行.

#include <iostream>
int main()
{
    std::cout << "Hello, World!" <<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这在g ++中编译得很好,但运行a.exe会显示"Hello,World!" 然后会弹出一个窗口并说"a.exe已停止工作,Windows可以在线检查程序的解决方案......"等.

有没有人见过这个问题.

另外,我试过"std :: cout <<"Hello,World!\n"<< std :: flush;" 这也有同样的问题.似乎每个刷新缓冲区的函数都会导致崩溃.

按照Eric的建议,我重新编译了程序并在gdb中运行它并得到以下输出:

Program received signal SIGILL, Illegal instruction. 
0x00405065 in _Jv_RegisterClasses ()
Run Code Online (Sandbox Code Playgroud)

c++ mingw flush endl

10
推荐指数
1
解决办法
2250
查看次数

什么是'冲洗溪流'的意思?

我已经读过,'\n'比'endl'更适合c ++中的新行,因为'endl'插入新行并刷新流.请告诉我什么是冲洗流?

c++ flush

10
推荐指数
3
解决办法
6029
查看次数