Android的Socket通信編程實現(xiàn)程序
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
Android手機的應(yīng)用,除了它的手機功能之外,另外一個吸引人的地方在于它的開放性,這一點iphone無法比擬,至少iphone太多商業(yè)化氣息。android為我們開啟另一扇交流之窗,而要實現(xiàn)交流,socket通信必不可少。 java在socket通信方面上已經(jīng)有了很好的范例,我只是拋磚引玉,將其引入到android之中,疏漏之處在所難免,很多地方也值得深思與考量,高手不必拍磚,可跳過此文。下面,用敲門的方式演示Android如何實現(xiàn)套接字的通信。 服務(wù)器程序 服務(wù)器程序需要在PC上運行,該程序比較的簡單,因此不需要建立Android項目,直接定義一個JAVA類,并且運行該類即可。它僅僅建立ServerSocket監(jiān)聽,并使用Socket獲取輸入輸出流 代碼如下 復(fù)制代碼 import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class SimpleServer { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //創(chuàng)建一個ServerSocket,用于監(jiān)聽客戶端socket的連接請求 ServerSocket ss=new ServerSocket(30000); //采用循環(huán)不斷接受來自客戶端的請求,服務(wù)器端也對應(yīng)產(chǎn)生一個Socket while(true){ Socket s=ss.accept(); OutputStream os=s.getOutputStream(); os.write("您好,您收到了服務(wù)器的新年祝福!n".getBytes("utf-8")); os.close(); s.close(); } }} 客戶端程序 代碼如下 復(fù)制代碼 package my.learn.tcp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.EditText; public class SimpleClient extends Activity { private EditText show; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); show = (EditText) findViewById(R.id.show); try { Socket socket = new Socket("自己計算機的IP地址", 30000); //設(shè)置10秒之后即認為是超時 socket.setSoTimeout(10000); BufferedReader br = new BufferedReader(new InputStreamReader( socket.getInputStream())); String line = br.readLine(); show.setText("來自服務(wù)器的數(shù)據(jù):"+line); br.close(); socket.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block Log.e("UnknownHost", "來自服務(wù)器的數(shù)據(jù)"); e.printStackTrace(); } catch (IOException e) { Log.e("IOException", "來自服務(wù)器的數(shù)據(jù)"); // TODO Auto-generated catch block e.printStackTrace(); } } } 需要注意的是,在Manifest.xml文件當(dāng)中,需要對互聯(lián)網(wǎng)的訪問進行授權(quán)。 代碼如下 復(fù)制代碼
<uses-permission android:name="android.permission.INTERNET"/> 該文章在 2013/2/25 12:18:23 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |