C#Stream.beginhead()和AsyncResult的Java等价物?
我有这样的代码可以移植到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
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);
}
}