Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Stream.beginhead()和AsyncResult的Java等价物?_C#_Java_Sockets - Fatal编程技术网

C#Stream.beginhead()和AsyncResult的Java等价物?

C#Stream.beginhead()和AsyncResult的Java等价物?,c#,java,sockets,C#,Java,Sockets,我有这样的代码可以移植到Java: public class MyClass { Stream _stream; AsyncCallback callback; IAsyncResult readOperation; public MyClass(string host, string port) { TcpClient tcpClient = new TcpClient(); tcpClient.Connect(host

我有这样的代码可以移植到Java:

public class MyClass
{
    Stream _stream;
    AsyncCallback callback;
    IAsyncResult readOperation;

    public MyClass(string host, string port)
    {
        TcpClient tcpClient = new TcpClient();
        tcpClient.Connect(host, port);
        _stream = tcpClient.GetStream();
        callback = new AsyncCallback(Read);
        readOp = _stream.BeginRead(headerBuffer, 0, 1, callback, null);
    }

    private void listen(IAsyncResult asyncResult)
    {
        _stream.EndRead(asyncResult);
        //Do some work
        readOperation = _stream.BeginRead(headerBuffer, 0, 1, callback, null);
    }
}
我试过了,但没有真正成功

es = Executors.newFixedThreadPool(2);
es.execute(new ListenTask());

我应该使用SocketChannel.read()吗

附加问题:java的等价物是什么 readOperation.AsyncWaitHandle.WaitOne()


非常感谢

我不认为JDK中内置了直接语言,但您可以自己拼凑一个:


如果没有,那么您可能正在寻找Java NIO—非阻塞I/O。

我不认为JDK中内置了直接语言等价物,但可以拼凑出您自己的一种:


如果没有,那么您可能正在寻找Java NIO—非阻塞I/O。

AFAIK Java core没有您正在寻找的异步I/O,但自己创建一个并不是什么大问题—创建两个实现线程的类(一个用于读取,一个用于写入),让这些类的contstructor接受与BeginRead/BeginWrite相同的参数,添加委托,就这样。关于代表的文章可以在上面的答案中找到

AFAIK Java core没有您正在寻找的异步i/o,但自己创建一个似乎不是什么大问题——创建两个实现线程的类(一个用于读取,一个用于写入),使这些类的contstructor接受与BeginRead/BeginWrite相同的参数,添加委托,就这些。关于代表的文章可以在上面的答案中找到

Java有支持非阻塞但不支持异步/事件驱动IO的NIO。然而,已经在NIO之上构建了各种库,它们提供这种API/行为

其中一个最好的是我可以推荐个人使用


编辑:我相信真正的异步IO将出现在Java 7中。

Java拥有支持非阻塞但不支持异步/事件驱动IO的NIO。然而,已经在NIO之上构建了各种库,它们提供这种API/行为

其中一个最好的是我可以推荐个人使用


编辑:我相信真正的异步IO将出现在Java 7中。

m
标记用于……?这是一个输入错误,我的bad.NetworkStream.beginhead不只是在不同的线程中运行Read。它将读取委托给操作系统,当接收到数据时,操作系统将回调C代码(“IO完成端口”)。Java显然还没有一个等价物;请看,我将尝试列出的框架之一,然后。感谢您的回答,
m
标记是用于……?这是一个输入错误,我的bad.NetworkStream.beginhead不只是在不同的线程中运行Read。它将读取委托给操作系统,当接收到数据时,操作系统将回调C代码(“IO完成端口”)。Java显然还没有一个等价物;请看,我将尝试列出的框架之一,然后。感谢您的回答我已经处理了应用程序中的一些委托,但我认为这个问题与异步IO编程更相关。我已经处理了应用程序中的一些委托,但我认为这个问题与异步IO编程更相关。Java NIO是关于非阻塞I/O的。Java NIO是关于非阻塞I/O。是的,netty和mina看起来不错。我需要SSL支持,他们都得到了。谢谢:)是的,内蒂和米娜看起来很好。我需要SSL支持,他们都得到了。谢谢:)
public class ListenTask implements Runnable {

    public void run() {
        //Stream is a SocketChannel
    _stream.socket().getInputStream().read(headerBuffer, 0, 1);
    }
}