请给我讲讲如何在java中读取数据流。我的要求是建立到路由器的telnet连接。这部分已经完成了。在路由器上,必须使用其ip地址和端口号通过telnet连接到xxx远程计算机。在建立这个连接时,我得到了一些响应。但在读取时,程序控制在InputStream类的read()方法处停止。下面是我用来读取数据流的代码片段。
buff = new byte[4*1024];
ret_read = 0;
do
{
ret_read = in.read(buff); // Program control gets ha
我已经写了一个代理,它也复制流量。我正在尝试将网络流量复制到副本服务器,该副本服务器应接收所有输入并处理所有请求。但是,只有主服务器上的响应对客户端可见。高级工作流程如下
Thread 1. Take input from client forward it to a pipe in non-blocking way, and to the server
Thread 2. Read from server and send to client
Thread 3. Read from pipe and forward to replica server
Thread 4. Read from
public static void ReadWholeArray (Stream stream, byte[] data)
{
int offset=0;
int remaining = data.Length;
while (remaining > 0)
{
int read = stream.Read(data, offset, remaining);
if (read <= 0)
throw new EndOfStreamException(String.Format("End
我正在尝试设置一个TCP套接字服务器,它应该同时支持多个客户端连接,以及接收和发送数据。
为此,我尝试使用PHP的socket_select();,因为服务器总是挂起在socket_read();进程,它应该继续,无论有没有数据。我尝试运行下面的代码,但它总是挂在新的客户端连接上。
// TCP socket created
$clients = array($socket);
while (true) { // Infinite loop for server
$newsock = socket_accept($socket);
if ($newsock !== false) {
我偶尔会遇到SocketChannel.read()在非阻塞通道(RH6上的JDK1.6变体)上阻塞的情况。我对规范的理解是,这种情况永远不应该发生。在向套接字添加了较大的超时之后(我认为这不是真正必要的……),我看到了以下内容:java.io.IOException: Connection timed out at sun.nio.ch.FileDispatcherImpl.read0(Native method) ... at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ...查
file.read()的文档说:
Notice that when in non-blocking mode, less data than what was requested
may be returned, even if no size parameter was given.
这是否意味着file.read()不一定总是返回文本文件的全部内容,即使它很可能会返回呢?如果是,那么读取整个文本文件的正确方法是什么?
我在套接字中使用了一个无限循环,如果它接收到一些数据,它应该接收它,或者如果它想要发送它发送的数据。类似于下面给出的内容。我正在使用select。我只有一个sd插座。
fd_set readsd;
int maxsd = readsd +1;
// all those actions of setting maxsd to the maximum fd +1 and FDSETing the FDs.
while(1)
{
FD_ZERO(&read_sd);
FD_SET(sd, &read_sd);
if(FD_ISSET(sd, &r
一段时间以来,我一直在Java的Streams和Socket中学习。每个人都说的是read()块(尤其是在网速远低于我们的计算机的套接字中)。我试着想象一下这是怎么回事。我是说它看起来像:
(PSEUDOCODE)
read() {
while (true) {
if (there is at least one byte to read) {
return this byte;
}
}
}
还是和其他低级的东西有关?我假设Java中的流是用C/C++实现的。我的问题是:首先,read()是如何工作的;第二个问题是,我们的
下面是示例程序:
from = File.open('test.bin', 'rb')
to = IO.popen('cat', 'w+b')
i = 0
while buff = from.read(4096)
to.write(buff) # blocks here
i += 1
print "#{i}, #{buff.size} bytes read \r"
end
它读取二进制文件(您可以在Linux上使用fallocate -l 1MB test.bin创建它)