资源简介
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.xm
目录 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.xm
目录 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个文件信息
相关资源
- Android和PHP开发最佳实践》源码.rar
- 蘑菇街开源的 IM 项目 TeamTalk(Androi
- Android Zxing Demo
- 4399unity3d android 添加广告demo
- Android使用列表弹窗的代码
- Android解析http常见数据格式的代码
- Android的书籍翻页动画代码
- rk3288Android7.1.2rk808edp
- androidQQ高仿界面
- Android opencv c++配置工程
- Android百度定位(模仿QQ和微信位置分
- android 自写日历备忘录源码
- android platform-tools 23.01
- MVP android的入门小
- android拨号盘
- 音乐播放器源码Android端+Pc管理+服务器
- android 性格测试代码
- 论文+Android飞行射击游戏代码
- android写字板
- Android下拉刷新、上拉加载、左滑删除
- Android十个经典游戏-开源代码播放器,
- Android:自定义组件绘制柱状统计图
- Android XMPP好友列表+聊天
- android游戏摩天大楼源代码
- modbus4j完整源码
- 在android上开启服务端
- Android应用之《宋词三百首》
- Android应用源码带响铃提醒的简易备忘
- android记录温度变化曲线
- Android文件与上传文件的代码
评论
共有 条评论