草庐IT

SIO_FLUSH

全部标签

c# - NetworkStream.Write 和 Flush 成功,尽管远程套接字已关闭

我在尝试将数据写入远程TCP服务器时遇到问题,连接被切断,但我无法检测到这种情况何时发生。我目前的假设是WriteAsync正在缓冲数据,但是我还假设FlushAsync应该通过网络强制它(并导致IOException)。我尝试这样做的真正原因是我需要执行一些低级别的HTTP流量,并且我想在发送请求正文之前验证HTTPheader是否已正确发送。我有一个简单的单元测试来说明我面临的问题。publicsealedclassSocketDisconnectTests{[Fact]publicasyncTaskShouldNotWriteIfDisconnected(){varlistene

java.net.Socket > outputStream > BufferedOutputStream flush() 确认

有没有办法知道BufferedOutputStream线程的flush()方法何时或是否成功完成?在我的例子中,我使用它通过java.net.Socket发送一个简单的字符串。在下面的代码中,flush()方法与BufferedReader.read()方法并行运行,套接字输出立即被输入读取阻塞,从而导致类似于死锁的情况。我想做的是等待输出结束,然后开始读取输入。Socketsk=newSocket("192.168.0.112",3000);BufferedOutputStreambo=newBufferedOutputStream(sk.getOutputStream());bo.

c++ - 读取 Windows 套接字上的 SIO_KEEPALIVE_VALS 字段(用于保持空闲和间隔时间)

给定一个Windows套接字,我想确定它使用哪些值作为TCPkeepalive空闲时间和TCPkeepalive间隔时间(大致相当于TCP_KEEPIDLE和TCP_KEEPINTVLBerkeley套接字上的设置)。我看到您可以使用WSAIoctl调用来设置这些值(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/dd877220%28v=vs.85%29.aspx)。但是,似乎没有任何API可以读取它们的当前值。我尝试使用填充的输出参数调用WSAIoctl但输入参数为NULL,如下所示:DWORDbytes_ret

java - 套接字流的 flush() 有多可靠?

考虑这段(简化的)代码:publicclassTest{//assignedelsewhereInetSocketAddresssocketAddress;StringsocketHost;intsocketPort;Socketsocket;intCOMMAND=10;intCONNECTION_TIMEOUT=10*1000;intSOCKET_TIMEOUT=30*1000;DataOutputStreamdos;DataInputStreamdis;protectedvoidconnect()throwsIOException,InterruptedException{sock

c# - 通过临时启用 NoDelay 套接字 "Flush"

背景我有一个用C#实现的HTTP服务器。使用ab我发现了一个奇怪的性能问题。每个请求在Keep-Alive关闭时花费5毫秒,但在Keep-Alive打开时花费40毫秒!测试页生成为单个byte[],使用单个socket.Send调用作为回复发送。据我所知,原因是TCP堆栈中使用的Nagle算法。TCP同花顺?到目前为止,我使用的是NoDelay服务的每个HTTP请求末尾的属性。socket.NoDelay=true;socket.NoDelay=false;这确实解决了现在的问题。但是我没有文档来支持我的发现。这是在linux/mono系统上测试的。是否有刷新TCP连接的标准方法?相关

java - OutputStream 的 flush 方法什么都不做?

来自OutputStream.flush()文档。为什么它在文档中说明OutputStream的flush方法什么都不做在解释它实际上做了一些事情之后?非常困惑。 最佳答案 OutputStream是一个派生自的抽象类。子类将提供自己的实现如有必要。否则默认行为是什么都不做。例如查看ObjectOutputStream.flush()的代码 关于java-OutputStream的flush方法什么都不做?,我们在StackOverflow上找到一个类似的问题:

java - 什么时候使用 Image.flush() 是安全的(或强制的)?

我的第一步是用Java(和Java本身)处理图像和缓冲图像,我对flush()方法有点困惑,我的问题很简单:什么时候安全甚至是强制刷新代码中的图像?做一些测试它看起来像Image.flush()没有做任何事情,但是BufferedImage.flush()给出了一些随机结果(有时一些内存似乎被释放),但是我用来绘制它的组件停止绘制它在它的背景上。那么我应该使用Image.flush()或BufferedImage.flush()还是我必须让JVM自己做的事情,或者可能在对象的finalize()方法中做?我真的想不通... 最佳答案

java - 在每 100 行 10 000 上使用 flush() 方法会减慢事务

我有一个示例项目,使用spring-boot和spring-data-jpa以及postgresdb和一张表。我正在尝试将循环中的INSERT10000条记录放入表中并测量执行时间-从EntityManagerflush()方法每100条记录的类。预期结果是启用flush()方法的执行时间比禁用方法少得多,但实际上我得到了相反的结果。UserService.javapackagesample.data;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereo

java - 如何将 flush() 用于 PrintWriter

我有一些这样的代码:PrintWriterpw=newPrintWriter(newBufferedReader(....));for(inti=0;i每个'for'语句中的flush()是必然的吗?我听说flush()会在调用close()时自动调用。如果我这样写代码:PrintWriterpw=newPrintWriter(newBufferedReader(....),true);我不会再写pw.flush()了吗?谢谢。 最佳答案 flush()可能在您的示例中不是必需的。它所做的是确保在调用flush()之前写入编写器的任

java - Java volatile read flush writes,和volatile write update reads

我理解读取-获取(不对其后的后续读/写操作重新排序)和写-释放(不对其之前的读/写操作重新排序)。我的问题是:-在读取-获取的情况下,它之前的写入是否被刷新?在写入释放的情况下,之前的读取是否得到更新?另外,java中read-acquire和volatileread一样,writerelease和volatilewrite一样吗?为什么这很重要,让我们以写释放为例..y=x;//aread..let'ssayxis1atthispointSystem.out.println(y);//1printed//oryoucanalsoconsiderSystem.out.println(x