最近導師要求我和另一個同學開發一個手機上課簽到應用,我負責用戶端和伺服器之間的通訊架構編寫和資料的儲存
本人大學四年只用過彙編和C/C++,因此對andriod開發還是一竅不通,花了一個星期寫出來了基本的通訊功能
首先是伺服器端的架構:
在網路通訊上主要有三類網路通訊線程,一是定時多播線程將同一區域網路內的教師機ip廣播給所有學生機,由於一個AP支援的串連數不多,所以才使用定時多播。二是監聽線程,接受學生機的tcp串連然後new出簽到事務線程。三是事務線程,處理學生的簽到資訊和返回簽到狀態,資料庫使用andriod內建的Sqlite,由於會有大量事務線程,因此要做好線程同步問題。
wifiManager= mButton.setOnClickListener( mEcho = mEcho.setText("begin" TCPListenThread tcpListenThread = MulticastThread multicastThread = multicastThread.start();
Log.i(TAG, "In MulticastThread.run()" InetAddress address = multicastSocket = ( i = 0; i != 100; ++ String msg = "I'm the teacher, my IP Address is?" + [] buf = DatagramPacket packet= Thread.sleep(1000 } } } .run();
Log.i(TAG, "In TCPListenThread.run()" listenSocket = ( CheckinSocket = CheckinThread checkinThread = } }
Log.i(TAG, "In CheckinThread.run()" InputStreamReader input = InputStreamReader( checkinSocket.getInputStream(),"UTF-8" [] b = [1024 StringBuilder builder = (( i = input.read(b)) != -1 String msg = Log.i(TAG, "In CheckinThread.run() msg:"+ } }
經多台機子的測試,伺服器能正常工作,但由於本人只有一個星期的andriod開發經驗,裡面的代碼難免會有不足和bug,希望各位能指出,謝謝~~