• 大小: 3.58MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-28
  • 语言: Java
  • 标签: android  

资源简介

android 无线点餐系统,源码,能直接运行。

资源截图

代码片段和文件信息

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();//获取通道内是否有选择器的关心事件
   if (num < 1) {//如果小于1停止此次循环进行下一个循环
    continue;
   }
   Set selectedKeys = selector.selectedKeys();//获取通道内关心事件的集合
   Iterator iterator = selectedKeys.iterator();//使用迭代放式,遍历事件集合
   while (iterator.hasNext()) {
    SelectionKey key = (SelectionKey) iterator.next();
    iterator.remove();//移走此次事件
    // 并在当前线程内处理。(为了高效,一般会在另一个线程中处理此消息,例如使用线程池等)  
    handleSelectionKey(key);  
   }  
}  
}  
  
public void handleSelectionKey(SelectionKey selectionKey) throws Exception {  
SocketChannel socketChannel;

if (selectionKey.isAcceptable()) { // 判断是否有新的客户端进来     
clientCount++;
socketChannel = ((ServerSocketChannel) selectionKey.channel()).accept(); //得到与客户端通道的套接字 
socketChannel.configureBlocking(false);
// 立即注册一个 OP_READ 的SelectionKey 接收客户端的消息  
SelectionKey key = socketChannel.register(selector SelectionKey.OP_READByteBuffer.allocate(1024));  
//key.attach(““);
key.attach(“第 “ + clientCount + “ 个客户端========================================= “);
//key.interestOps(SelectionKey.OP_ACCEPT);
System.out.println(“有新客户端连接“+socketChannel);


if (selectionKey.isReadable()) {  
// 有消息进来  ,有数据可读
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(“接收数据: “+msg);
socketChannel.write(charsetEncoder.encode(CharBuffer.wrap(msg + “\n“)));
System.out.println(“返回数据: “+msg);
selectionKey.interes

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-03-26 22:21  无线点餐系统\
     目录           0  2014-03-26 22:21  无线点餐系统\server\
     文件         299  2013-08-08 19:23  无线点餐系统\server\.classpath
     文件         382  2013-08-08 19:23  无线点餐系统\server\.project
     目录           0  2014-03-26 22:21  无线点餐系统\server\.settings\
     文件         629  2013-08-08 19:23  无线点餐系统\server\.settings\org.eclipse.jdt.core.prefs
     目录           0  2014-03-26 22:21  无线点餐系统\server\bin\
     文件        5171  2013-08-15 22:45  无线点餐系统\server\bin\clientServer.class
     目录           0  2014-03-26 22:21  无线点餐系统\server\bin\com\
     目录           0  2014-03-26 22:21  无线点餐系统\server\bin\com\vista\
     目录           0  2014-03-26 22:21  无线点餐系统\server\bin\com\vista\Server\
     文件         817  2013-08-15 22:45  无线点餐系统\server\bin\com\vista\Server\SelectorServer$HandleClient.class
     文件        4746  2013-08-15 22:45  无线点餐系统\server\bin\com\vista\Server\SelectorServer.class
     目录           0  2014-03-26 22:21  无线点餐系统\server\src\
     文件        4388  2013-08-11 22:34  无线点餐系统\server\src\clientServer.java
     目录           0  2014-03-26 22:21  无线点餐系统\server\src\com\
     目录           0  2014-03-26 22:21  无线点餐系统\server\src\com\vista\
     目录           0  2014-03-26 22:21  无线点餐系统\server\src\com\vista\Server\
     文件        6573  2013-08-09 09:23  无线点餐系统\server\src\com\vista\Server\SelectorServer.java
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\
     文件         380  2013-05-05 22:50  无线点餐系统\WirelessOrder_Client\.classpath
     文件         856  2013-05-05 22:40  无线点餐系统\WirelessOrder_Client\.project
     文件        1270  2013-05-05 22:40  无线点餐系统\WirelessOrder_Client\AndroidManifest.xml
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\assets\
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\bin\
     文件        1270  2013-08-05 23:12  无线点餐系统\WirelessOrder_Client\bin\AndroidManifest.xml
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\bin\classes\
     文件       48340  2013-05-05 23:02  无线点餐系统\WirelessOrder_Client\bin\classes.dex
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\bin\classes\com\
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\bin\classes\com\amaker\
     目录           0  2014-03-26 22:21  无线点餐系统\WirelessOrder_Client\bin\classes\com\amaker\provider\
............此处省略153个文件信息

评论

共有 条评论