java判断tcp是否阻塞_非阻塞式TCP时间服务器

packagecom.tz.simple.tcp;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.SelectionKey;importjava.nio.channels.Selector;importjava.nio.channels.SocketChannel;importjava.util.Iterator;importjava.util.Set;importcom.tz.uitl.Common;/*** 非阻塞式TCP时间服务器

* 同并发接收服务器数据

*

*@authorLJZ

**/publicclassTCPTimeClientextendsThread {privateintserverPort=8485;privateSocketChannel client=null;privateSelector readSelector=null;publicTCPTimeClient(intp)throwsIOException {

serverPort=p;

readSelector=Selector.open();

client=SocketChannel.open();

client.connect(newInetSocketAddress("192.168.100.38", serverPort));

client.configureBlocking(false);

client.register(readSelector, SelectionKey.OP_READ);

System.out.println("客户端 ["+client.socket().getLocalSocketAddress()+"] 启动, 连接服务器 ["+client.socket().getRemoteSocketAddress()+"]");

}publicvoidrun() {while(true) {try{intkeysReady=readSelector.select(100);if(keysReady>0) {

Set readyKeys=readSelector.selectedKeys();for(Iterator i=readyKeys.iterator(); i.hasNext();) {

i.next();

i.remove();intnbytes=-1;

ByteBuffer byteBuffer=ByteBuffer.allocate(1024);

nbytes=client.read(byteBuffer);if(nbytes>0) {

byteBuffer.flip();

System.out.println("收到服务器传来数据"+Common.decode(byteBuffer));

}

}

}

client.write(ByteBuffer.wrap("abcd".getBytes()));

}catch(Exception e) {

e.printStackTrace();

}finally{

}

}

}/***@paramargs*/publicstaticvoidmain(String[] args) {try{newTCPTimeClient(8485).start();

}catch(Exception e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值