Tags:

ต้องการทำการเช็คผลฉลากกินแบ่งรัฐบาล โดยclientทำการกรอกเลขและนำส่งไปให้server และserverเปิดไฟล์txtมาเทียบค่าที่ทางclientส่งมา ว่าเท่ากันไหน
ปัญหาติดตรงที่ฝั่งserverเช็คค่าจากfileไม่ได้ครับ ผลว่าผลผิดตรง while

Get latest news from Blognone
By: Golfz3120
Android
on 2 November 2011 - 16:20 #350289

ฝั่ง client

public class SearchLottery extends Activity {
private final String DEBUG_TAG = "SearchLottery";
private Button buttonBack;
private Button buttonOK=null;
private EditText editTextInput=null;
private TextView mTextView=null;
private Socket socket = null;
//private Spinner spin = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search_lottery);

    // code กำหนดค่า spinner
    Spinner s = (Spinner) findViewById(R.id.spinnerDate);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
            R.array.Date, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s.setAdapter(adapter);

    //ปุ่มย้อนกลับ
    buttonBack = (Button) findViewById(R.id.buttonBack);

    buttonBack.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

    //ปุ่ม OK ของ Input Lottery
    mTextView = (TextView) findViewById(R.id.mTextView);
    editTextInput = (EditText) findViewById(R.id.editTextInput);
    buttonOK = (Button) findViewById(R.id.buttonOK);

    buttonOK.setOnClickListener(new OnClickListener(){  
        public void onClick(View V) {
            //String date = spin.getSelectedItem().toString();
            String message = editTextInput.getText().toString() + " ";
            try {
                socket = new Socket("192.168.3.6", 4460);
                PrintWriter out = new PrintWriter(new BufferedWriter(
                        new OutputStreamWriter(socket.getOutputStream())),
                        true);
                out.println(message);

                BufferedReader br = new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
                String msg = br.readLine();
                if (msg != null) {
                    mTextView.setText(mTextView.getText() + " "+ msg + "\n");
                } else {
                    mTextView.setText(" Data error! ");
                }
                out.close();
                br.close();
                socket.close();
            } catch (Exception e) {
                Log.e(DEBUG_TAG, e.toString());
            }
        }
    });

}

}

ฝั่ง server

public class SimpleServer implements Runnable {

public void run() {
    try {
        ServerSocket ServerSocket = new ServerSocket(4460);
        Socket client = null;
        System.out.println("Server Started");
        //String message = null;
        //String lot = null;
        while (true) {
            client = ServerSocket.accept();
            System.out.println("Client accept : " + client);
            try {
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(client.getInputStream()));
                String str = in.readLine();
                System.out.println("read : " + str);

                PrintWriter out = new PrintWriter(new BufferedWriter(
                        new OutputStreamWriter(client.getOutputStream())),
                        true);
                FileReader freader = new FileReader("16oct11.txt");
                BufferedReader inputFile = new BufferedReader(freader);
                String scan = inputFile.readLine();
                int i=0;
                while (scan!=null){
                    //System.out.println(scan);
                    //scan=inputFile.readLine();
                    if(scan.equals(str))
                    {
                        i=1;
                        break;
                    }
                    scan=inputFile.readLine();
                }
                if(i==1)
                    out.println("Found");
                else
                    out.println("No Data");

                inputFile.close();
                out.close();
                in.close();
            } catch (Exception e) {
                client.close();
                System.out.println("close");
                System.out.println(e.getMessage());
                e.printStackTrace();
            }
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

public static void main(String[] a)throws IOException{
    Thread desktopServerThread = new Thread(new SimpleServer());
    desktopServerThread.start();
}

}

By: Golfz3120
Android
on 2 November 2011 - 16:22 #350290

ไม่ว่าใส่ค่าอะไร layout ออกมาโชว์ เป็น No Data ตลอดครับ ไม่ว่าจะใส่ค่าถูกหรือผิด ออกแบบเดิมตลอด

By: mr_tawan
ContributoriPhoneAndroidWindows
on 2 November 2011 - 19:54 #350342 Reply to:350290
mr_tawan's picture

ลอง printf ตัวแปร str กับ scan ดูหรือยังครับ (ฝั่ง server)


  • 9tawan.net บล็อกส่วนตัวฮับ
By: Golfz3120
Android
on 2 November 2011 - 22:47 #350372

ลองแล้วครับ ค่าถูกต้อง นั่งงมมาหลายวันแระครับ ไม่รู้ผิดตรงไหน

By: zoonooz
ContributoriPhoneWindows PhoneAndroid
on 3 November 2011 - 01:10 #350386

String message = editTextInput.getText().toString() + " ";

เพิ่มช่องว่างไปตัวนึงหรือเปล่าครับ

By: Golfz3120
Android
on 3 November 2011 - 15:16 #350559

เพิ่มแล้วครับ