netty怎么才能一次接收超过1024字节的字符串
dusz 2013-05-03 08:33:09 package com.angogps.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executors;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
public class MeiTrackSocketServer extends Thread{
public static void main(String[] args) throws IOException {
ServerBootstrap bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() {
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("handler", new HelloWorldServerHandler());
return pipeline;
}
});
bootstrap.bind(new InetSocketAddress(8080));
}
}
package com.angogps.socket;
import java.nio.charset.Charset;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelHandler;
public class HelloWorldServerHandler extends SimpleChannelHandler{
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
ChannelBuffer buffer = (ChannelBuffer) e.getMessage();
String string=buffer.toString(Charset.defaultCharset());
System.out.println("全部"+string);
String[] strings=string.split(",");
System.out.println("============"+strings[0]);
System.out.println("---------------"+strings[1]);
}
}
客户端
package com.angogps.socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class MeiTrackSocketClient {
static Socket server;
public static void main(String[] args) throws Exception {
server = new Socket(InetAddress.getLocalHost(), 8080);
BufferedReader in = new BufferedReader(new InputStreamReader(
server.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
// BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
//
String str = "1,开三等奖拉克丝就阿斯达阿里斯柯达将阿里三等奖阿隆" +
"索肯德阿克苏进和大款数据还得卡机和sals拉斯柯达将阿拉斯加的拉克丝将德拉科" +
"将山东龙口就阿斯兰大口径阿拉克三等奖阿里斯顿进啦看时间段拉斯克奖的拉斯克奖的拉克丝 " +
" d卡集合sd卡将啊哈sd卡哈萨克的将哈克圣诞卡寄售点卡寄售点卡寄售点卡就 基啊拉斯克" +
"奖得拉看时间段阿拉克三等奖阿里斯顿将阿里看时间段啦三间大流开局拉克丝将大力看时间段" +
"啦看时间段拉克丝就的拉斯克奖大路考手机登陆安静的拉克丝将德拉科将史黛拉看" +
"时间段拉克丝就的拉开三等奖啊拉斯克奖大流口水较大流开局打了斯柯达将阿里看时间段l" +
"askdj啊拉斯柯达将啊拉斯克奖大流口水较拉克将打蜡看时间段拉克丝就德拉科见识到了" +
"卡机是的垃圾算了阿隆索肯德基啊拉斯克奖的拉斯克奖的拉克丝就阿斯兰大口径啊拉斯克奖得拉看" +
"时间段阿斯兰大口径阿斯利康打拉斯克奖的阿斯兰大口径阿斯兰肯德基阿斯利康大劫案拉卡机死得啦" +
"可接受的拉克丝将打蜡看时间段拉克丝就的拉斯克奖得拉看时间段拉斯科阿雷克斯较大拉克丝较大拉斯" +
"克奖达拉斯肯德基啊拉斯克奖打拉斯克奖达拉斯科技大拉斯克奖的阿雷克斯较大拉克丝将大力快睡觉大立科技" +
"萨拉肯德基啊拉斯克奖打拉斯克奖大路考大";
out.println(str);
out.flush();
System.out.println(in.readLine());
server.close();
}
}
发送这个长度的时候数据就分开接收了 如何设置才能让他一次接收完毕再做处理