欢迎来到天天文库
浏览记录
ID:51639834
大小:49.50 KB
页数:18页
时间:2020-03-14
《java+Socket实现客户端服务器端的登录通信.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、服务器和客户端都是自己再网上copy的代码,有一个bug就是当客户端退出的时候会报错,这个bug很容易解决。先来看看我们的服务器端代码:(服务器端用了数据库的查询登陆)packageTest;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.net.ServerSocket;importjava.nio.ByteBuffer;importjava.nio.channels.SelectionKey;importjava.nio.channels.Selector;importjava.n
2、io.channels.ServerSocketChannel;importjava.nio.channels.SocketChannel;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.Iterator;importjava.util.Set;publicclassServer{publicstaticfinalintserverport=5555;publicstaticfinalStringisack="ack";publicstaticfinalStringisnak="nak"
3、;privateByteBufferechobuffer=ByteBuffer.allocate(1024);publicServer(){}publicstaticvoidmain(String[]args){newServer().buildserver();}publicvoidbuildserver(){try{ServerSocketChannelssc=ServerSocketChannel.open();ssc.configureBlocking(false);ServerSocketss=ssc.socket();ss.bind(newInetSocketAd
4、dress("127.0.0.1",serverport));Selectorselector=Selector.open();SelectionKeyskey=ssc.register(selector,SelectionKey.OP_ACCEPT);while(true){intnum=selector.select();if(num<1){continue;}SetselectedKeys=selector.selectedKeys();Iteratorit=selectedKeys.iterator();while(it.hasNext()){SelectionKey
5、key=(SelectionKey)it.next();if((key.readyOps()&SelectionKey.OP_ACCEPT)==SelectionKey.OP_ACCEPT){ServerSocketChannelserverchannel=(ServerSocketChannel)key.channel();SocketChannelsc=serverchannel.accept();sc.configureBlocking(false);SelectionKeynewKey=sc.register(selector,SelectionKey.OP_READ
6、);it.remove();System.out.print("getconnectionfrom"+sc);}else{if((key.readyOps()&SelectionKey.OP_READ)==SelectionKey.OP_READ){SocketChannelsc=(SocketChannel)key.channel();intbytesEchoed=0;while((bytesEchoed=sc.read(echobuffer))>0){System.out.println("bytesEchoed"+bytesEchoed);}echobuffer.fli
7、p();System.out.println("limet"+echobuffer.limit());byte[]content=newbyte[echobuffer.limit()];echobuffer.get(content);Stringresult=newString(content);doPost(result,sc);echobuffer.clear();it.remove();}}}}}catch(IOExceptione){//TODOAuto-generatedcatchblocke
此文档下载收益归作者所有