資源簡(jiǎn)介
android 無線點(diǎn)餐系統(tǒng),源碼,能直接運(yùn)行。

代碼片段和文件信息
import?java.io.FileInputStream;??
import?java.net.InetSocketAddress;??
import?java.net.Socket;??
import?java.nio.ByteBuffer;??
import?java.nio.CharBuffer;??
import?java.nio.channels.SelectionKey;??
import?java.nio.channels.Selector;??
import?java.nio.channels.ServerSocketChannel;??
import?java.nio.channels.SocketChannel;??
import?java.nio.charset.Charset;??
import?java.nio.charset.CharsetDecoder;??
import?java.nio.charset.CharsetEncoder;??
import?java.util.Iterator;??
import?java.util.Properties;??
import?java.util.Set;
??
public?class?clientServer?{??
??
public?static?final?int?PORT?=?12315;??
protected?Selector?selector;??
protected?Charset?charset?=?Charset.forName(“UTF-8“);??
protected?CharsetEncoder?charsetEncoder?=?charset.newEncoder();??
protected?CharsetDecoder?charsetDecoder?=?charset.newDecoder();???
int?clientCount;
public?clientServer()?throws?Exception?{??
selector?=?Selector.open();??
ServerSocketChannel?serverSocketChannel?=?ServerSocketChannel.open();??
serverSocketChannel.socket().bind(new?InetSocketAddress(PORT));?//?port??
serverSocketChannel.configureBlocking(false);??
serverSocketChannel.register(selector?SelectionKey.OP_ACCEPT);//?register??
p(“Server?localhost:“?+?PORT?+?“?started.?waiting?for?clients.?“);??
while?(true)?{??
???int?num?=?selector.select();//獲取通道內(nèi)是否有選擇器的關(guān)心事件
???if?(num?1)?{//如果小于1停止此次循環(huán)進(jìn)行下一個(gè)循環(huán)
????continue;
???}
???Set?selectedKeys?=?selector.selectedKeys();//獲取通道內(nèi)關(guān)心事件的集合
???Iterator?iterator?=?selectedKeys.iterator();//使用迭代放式,遍歷事件集合
???while?(iterator.hasNext())?{
????SelectionKey?key?=?(SelectionKey)?iterator.next();
????iterator.remove();//移走此次事件
????//?并在當(dāng)前線程內(nèi)處理。(為了高效,一般會(huì)在另一個(gè)線程中處理此消息,例如使用線程池等)??
????handleSelectionKey(key);??
???}??
}??
}??
??
public?void?handleSelectionKey(SelectionKey?selectionKey)?throws?Exception?{??
SocketChannel?socketChannel;
if?(selectionKey.isAcceptable())?{?//?判斷是否有新的客戶端進(jìn)來?????
clientCount++;
socketChannel?=?((ServerSocketChannel)?selectionKey.channel()).accept();?//得到與客戶端通道的套接字?
socketChannel.configureBlocking(false);
//?立即注冊(cè)一個(gè)?OP_READ?的SelectionKey?接收客戶端的消息??
SelectionKey?key?=?socketChannel.register(selector?SelectionKey.OP_READByteBuffer.allocate(1024));??
//key.attach(““);
key.attach(“第?“?+?clientCount?+?“?個(gè)客戶端=========================================?“);
//key.interestOps(SelectionKey.OP_ACCEPT);
System.out.println(“有新客戶端連接“+socketChannel);
}?
if?(selectionKey.isReadable())?{??
//?有消息進(jìn)來??,有數(shù)據(jù)可讀
socketChannel?=?(SocketChannel)?selectionKey.channel();
ByteBuffer?byteBuffer?=?ByteBuffer.allocate(1024);
try?{??
int?len?=?socketChannel.read(byteBuffer);
if?(len>0)?{
byteBuffer.flip();
String?msg?=?charsetDecoder.decode(byteBuffer).toString();??
System.out.println(“接收數(shù)據(jù):?“+msg);
socketChannel.write(charsetEncoder.encode(CharBuffer.wrap(msg?+?“\n“)));
System.out.println(“返回?cái)?shù)據(jù):?“+msg);
selectionKey.interes
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\
?????文件?????????299??2013-08-08?19:23??無線點(diǎn)餐系統(tǒng)\server\.classpath
?????文件?????????382??2013-08-08?19:23??無線點(diǎn)餐系統(tǒng)\server\.project
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\.settings\
?????文件?????????629??2013-08-08?19:23??無線點(diǎn)餐系統(tǒng)\server\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\bin\
?????文件????????5171??2013-08-15?22:45??無線點(diǎn)餐系統(tǒng)\server\bin\clientServer.class
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\bin\com\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\bin\com\vista\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\bin\com\vista\Server\
?????文件?????????817??2013-08-15?22:45??無線點(diǎn)餐系統(tǒng)\server\bin\com\vista\Server\SelectorServer$HandleClient.class
?????文件????????4746??2013-08-15?22:45??無線點(diǎn)餐系統(tǒng)\server\bin\com\vista\Server\SelectorServer.class
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\src\
?????文件????????4388??2013-08-11?22:34??無線點(diǎn)餐系統(tǒng)\server\src\clientServer.java
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\src\com\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\src\com\vista\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\server\src\com\vista\Server\
?????文件????????6573??2013-08-09?09:23??無線點(diǎn)餐系統(tǒng)\server\src\com\vista\Server\SelectorServer.java
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\
?????文件?????????380??2013-05-05?22:50??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\.classpath
?????文件?????????856??2013-05-05?22:40??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\.project
?????文件????????1270??2013-05-05?22:40??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\AndroidManifest.xm
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\assets\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\
?????文件????????1270??2013-08-05?23:12??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\AndroidManifest.xm
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\classes\
?????文件???????48340??2013-05-05?23:02??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\classes.dex
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\classes\com\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\classes\com\amaker\
?????目錄???????????0??2014-03-26?22:21??無線點(diǎn)餐系統(tǒng)\WirelessOrder_Client\bin\classes\com\amaker\provider\
............此處省略153個(gè)文件信息
評(píng)論
共有 條評(píng)論