2

さまざまな URL 要求を認識し、要求ごとにさまざまなアクションを実行できるコードを実装しようとしています。たとえば、にアクセス して写真を撮り、http://192.168.0.120/pic経由でアクセスして電子メールを送信します。http://192.168.0.120/emailそれらを異なる URL リクエストに割り当てますか? Webサーバーを実行して1つのIPアドレスのみを認識できるコードを1つ見つけました。複数のIPアドレスを認識し、リクエストごとに異なるアクションを実行するように変更したいと思います: コード:

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.LinkedList;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class Server extends Thread {
    private ServerSocket listener = null;
    private static Handler mHandler;
    private boolean running = true;

    public static LinkedList<Socket> clientList = new LinkedList<Socket>();

    public Server(String ip, int port, Handler handler) throws IOException {
        super();
        mHandler = handler;
        InetAddress ipadr = InetAddress.getByName(ip);
        listener = new ServerSocket(port,0,ipadr);
    }

    private static void send(String s) {
        Message msg = new Message();
        Bundle b = new Bundle();
        b.putString("msg", s);
        msg.setData(b);
        mHandler.sendMessage(msg);
    }

    @Override
    public void run() {
        while( running ) {
            try {

                Socket client = listener.accept();


                new ServerHandler(client).start();
                LockStatus.getInstance().setMyVar(true);


                clientList.add(client);

            } catch (IOException e) {

            }
        }
    }

    public void stopServer() {
        running = false;
        LockStatus.getInstance().setMyVar(false);
        try {
            listener.close();
        } catch (IOException e) {

        }
    }

どうもありがとう

4

1 に答える 1

0

コードの変更は次のとおりですが、それでも IP アドレスを認識できません。

public void run() {
        try {
            serverSocket = new ServerSocket(SERVERPORT);

            while (running) {
                // LISTEN FOR INCOMING CLIENTS
                Socket client = serverSocket.accept();

                try {
                    BufferedReader in = new BufferedReader(
                            new InputStreamReader(client.getInputStream()));
                    String line = null;
                    String IP = "192.168.0.111";
                    line = in.readLine();
                    if (line.equals(IP)) {
                        new ServerHandler(client).start();
                        LockStatus.getInstance().setMyVar(true);
                        Log.i(TAG, "IP Receive=" + line);
                        // Toast.makeText(getContext(), "Matches",
                        // Toast.LENGTH_SHORT).show();
                    } else {
                        Log.i(TAG, " IP not received :=" + line);
                        // Toast.makeText(getApplicationContext(), line +" != "+
                        // IP, Toast.LENGTH_SHORT).show();

                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } 
于 2013-08-18T10:27:58.977 に答える