有关Apache MINA HTTP协议支持的信息
我们在当前的TCP/IP协议项目中使用了ApacheMina,其中服务器和客户端通过TCP/IP进行通信。所以我们已经有了MINA的一些代码 现在,我们还希望支持http协议,并尽可能重复使用 我需要一些客户机/服务器代码示例,用于使用MINA-HTTP的URL(/servlet)进行连接 我找到了如下链接- 但正在寻找服务器端和客户端的示例代码。 如果有人能在这方面帮助我,那就太好了 谢谢,有关Apache MINA HTTP协议支持的信息,http,apache-mina,Http,Apache Mina,我们在当前的TCP/IP协议项目中使用了ApacheMina,其中服务器和客户端通过TCP/IP进行通信。所以我们已经有了MINA的一些代码 现在,我们还希望支持http协议,并尽可能重复使用 我需要一些客户机/服务器代码示例,用于使用MINA-HTTP的URL(/servlet)进行连接 我找到了如下链接- 但正在寻找服务器端和客户端的示例代码。 如果有人能在这方面帮助我,那就太好了 谢谢,final Object lock=new Object(); final Object lo
final Object lock=new Object();
final Object lock = new Object();
IoAcceptor acceptor = new NioSocketAcceptor();
((NioSocketAcceptor) acceptor).setReuseAddress(true);
acceptor.getFilterChain().addLast("httpServer", new HttpServerCodec());
acceptor.setHandler(new IoHandlerAdapter() {
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
// System.out.println("message "+message.getClass()+" "+message);
if (message instanceof HttpRequest) {
byte[] bytes = "Hello World!".getBytes();
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Length", Integer.toString(bytes.length));
DefaultHttpResponse resp = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SUCCESS_OK,
headers);
session.write(resp);
session.write(IoBuffer.wrap(bytes));
session.write(new HttpEndOfContent());
if (((HttpRequest) message).getRequestPath().equals("/close")) {
synchronized (lock) {
lock.notify();
}
}
}
}
});
acceptor.bind(new InetSocketAddress(21212));
synchronized (lock) {
lock.wait();
}
acceptor.unbind();
acceptor.dispose(true);
IoAcceptor acceptor=新的NioSocketAcceptor();
((NioSocketAcceptor)acceptor).setReuseAddress(true);
acceptor.getFilterChain().addLast(“httpServer”,新的HttpServerCodec());
acceptor.setHandler(新的IoHandlerAdapter(){
@凌驾
public void messageReceived(IoSession会话,对象消息)引发异常{
//System.out.println(“message”+message.getClass()+”+message);
if(HttpRequest的消息实例){
byte[]bytes=“你好,世界!”.getBytes();
Map headers=newhashmap();
headers.put(“Content-Length”,Integer.toString(bytes.Length));
DefaultHttpResponse resp=新的DefaultHttpResponse(HttpVersion.HTTP_1_1,HttpStatus.SUCCESS_OK,
标题);
会议记录(resp);
写入(IoBuffer.wrap(字节));
write(新的HttpEndOfContent());
if(((HttpRequest)message.getRequestPath().equals(“/close”)){
已同步(锁定){
lock.notify();
}
}
}
}
});
acceptor.bind(新的InetSocketAddress(21212));
已同步(锁定){
lock.wait();
}
接受者解除绑定();
承兑人。处置(真实);
NioSocketAcceptor acceptor=new NioSocketAcceptor();
acceptor.getFilterChain().addLast(“codec”,新的HttpServerCodec());
acceptor.setHandler(新的IoHandlerAdapter(){
public void messageReceived(IoSession会话,对象消息)引发异常{
if(HttpRequestImpl的消息实例){
HttpRequestImpl request1=(HttpRequestImpl)消息;
}
if(IoBuffer的消息实例){
SocketAddress addr=session.getRemoteAddress()
IoBuffer simbuf=(IoBuffer)消息;
字节[]buff=simbuf.array();
解码字符串=新字符串(buff,“UTF-8”);
系统输出打印项次(解码);
}
if(HttpEndOfContent的消息实例){
byte[]bytes=“确定”。getBytes();
Map headers=newhashmap();
headers.put(“Content-Length”,Integer.toString(bytes.Length));
DefaultHttpResponse resp=新的DefaultHttpResponse(
HttpVersion.HTTP_1_1,HttpStatus.SUCCESS_OK,headers);
会议记录(resp);
写入(IoBuffer.wrap(字节));
write(新的HttpEndOfContent());
}
}
});
试一试{
acceptor.bind(新的InetSocketAddress(1234));
}捕获(IOE异常){
e、 printStackTrace();
}
稍微解释一下你的答案。在mina http中,每次HttpServerDecoder.class()通过请求、正文、EndofContent返回时,我们都会使用它。。我们通过HttpServerDecoder中的相应对象接收公共无效消息Received(IoSession session,Object message)。classLooks good.对我来说工作很好我被困在同一个问题上一天了。保存了我的工作..谢谢broCan请在这里解释服务器和客户端部分..我是新手
NioSocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast( "codec", new HttpServerCodec());
acceptor.setHandler(new IoHandlerAdapter() {
public void messageReceived(IoSession session, Object message)throws Exception {
if (message instanceof HttpRequestImpl) {
HttpRequestImpl request1 = (HttpRequestImpl) message;
}
if (message instanceof IoBuffer) {
SocketAddress addr = session.getRemoteAddress()
IoBuffer simbuf = (IoBuffer) message;
byte[] buff = simbuf.array();
String decoded = new String(buff, "UTF-8");
System.out.println(decoded);
}
if (message instanceof HttpEndOfContent) {
byte[] bytes = "OK".getBytes();
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Length", Integer.toString(bytes.length));
DefaultHttpResponse resp = new DefaultHttpResponse(
HttpVersion.HTTP_1_1, HttpStatus.SUCCESS_OK, headers);
session.write(resp);
session.write(IoBuffer.wrap(bytes));
session.write(new HttpEndOfContent());
}
}
});
try {
acceptor.bind( new InetSocketAddress(1234) );
} catch (IOException e) {
e.printStackTrace();
}