obexserver.java

来自「《J2ME实用教程》清华大学出版社出版」· Java 代码 · 共 84 行

JAVA
84
字号
package com.j2medev.chapter9;

import java.io.DataInputStream;
import java.io.IOException;
import javax.microedition.io.Connection;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.*;
import javax.obex.*;

public class OBEXServer extends ServerRequestHandler implements Runnable,CommandListener{
    
    private OBEXMIDlet midlet = null;
    private SessionNotifier server = null;
    private Form form = null;
    private Command cancelCommand = new Command("cancel",Command.BACK,1);
    private boolean closed = false;
    
    public OBEXServer(OBEXMIDlet _midlet) {
        midlet = _midlet;
        form = new Form("server");
        form.addCommand(cancelCommand);
        form.setCommandListener(this);
        midlet.setCurrent(form);
    }
    
    public void run() {
        //启动服务器,监听端口5000
        try {
            server = (SessionNotifier)Connector.open("tcpobex://:5000");
        } catch (IOException ex) {
            ex.printStackTrace();
            return;
        }
        form.append("server has been started,waiting for client session....");
        while(!closed){
            try {
                //等待客户端连接
                Connection conn = server.acceptAndOpen(this);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    public void commandAction(Command command, Displayable displayable) {
        if(command == cancelCommand){
            //关闭服务器,并返回。
            closed = true;
            try {
                server.close();
                server = null;
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            midlet.show();
        }
    }
    //响应客户端的PUT操作
    public int onPut(Operation op){
        try {
            HeaderSet header = op.getReceivedHeaders();
            System.out.println(header.getHeader(HeaderSet.LENGTH).toString());
            //接收Account对象,并显示在Form上
            DataInputStream dis = op.openDataInputStream();
            String user = dis.readUTF();
            form.append("username="+user+"\n");
            String pass = dis.readUTF();
            form.append("password="+pass+"\n");
            //关闭
            dis.close();
            op.close();
        } catch (IOException ex) {
            ex.printStackTrace();
            //出错
            return ResponseCodes.OBEX_HTTP_INTERNAL_ERROR;
        }
        return ResponseCodes.OBEX_HTTP_OK;
    }
    //连接成功
    public int onConnect(HeaderSet request, HeaderSet reply) {
        return ResponseCodes.OBEX_HTTP_OK;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?