經過一整天的實驗, 終於讓 ANDROID 能夠順利接收 PC 端的通訊. 其通訊的原理, 是利用 JAVA 的通訊方式. 所以, 你必須 IMPORT JAVA 的功能.
如果你不知道如何設定 ANDROID 開發環境, 您可以參考 http://blog.chinatimes.com/tomsun/archive/2010/09/07/536320.html
孫傳雄先生寫的文章十分有幫助. 而您如果不習慣看網頁(那來這邊做什麼 笑), 您可以買 Gasolin 所寫的 "Google! Android 3" 放心, 國內早有翻譯. 松崗就有賣, 金石堂還打折呢.
要注意的重點是, "大小寫" 因為我曾經因為大小寫, 除錯了將近2小時. 最後才發現是大小寫的問題.
另一個要注意的事情是, 必須取得"上網權限" (靠.. 突然發現不能上傳圖片)....
好吧, 那就以文字表示吧. 在manifest.xml 那個檔案要注意取得上網權限. 要不然你測個一天也不會有結果. 還會懷疑自己是不是寫錯程式了 (笑)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.ivan.tcbus" android:versionCode="1" android:versionName="1.0" android:installLocation="preferExternal"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TCBUSActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
</application>
</manifest>
以下就是經過一天實驗的結果.
package org.ivan.tcbus;
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.widget.Button; import android.widget.TextView; import android.widget.EditText; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import org.ivan.tcbus.R;
public class TCBUSActivity extends Activity {
EditText editText1; // 文字方塊 TextView textView1; // 用來顯示文字訊息 private String address = "192.168.1.88";// 連線的ip private int port = 1024;// 連線的port @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttom =(Button)findViewById(R.id.submit); buttom.setOnClickListener(SServer); textView1 = (TextView) findViewById(R.id.textView1);
}
private OnClickListener SServer = new OnClickListener(){ public void onClick(View arg0) { EditText editText1 = (EditText)findViewById(R.id.editText1); //String tmp; // 暫存文字訊息 String message="xxx";
// TODO Auto-generated method stub
try { Socket socket = new Socket(address,port); OutputStream ops=socket.getOutputStream(); DataOutputStream dos=new DataOutputStream(ops); String tmp = editText1.getText().toString(); dos.write(tmp.getBytes()); dos.flush(); InputStream ops1=socket.getInputStream(); DataInputStream dos1 =new DataInputStream(ops1); int result = dos1.available(); while(result==0){ result=dos1.available(); } // 這一段是為什麼之前一直接收不到的原因, 請注意 byte[] data =new byte[result]; dos1.read(data); message =new String(data); System.out.println(message); textView1.setText(message); dos.close(); dos1.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
};
}
嗯, 可以上傳附件. 那就壓縮上傳吧
|
基本上我已經很久沒有 CODING 了, 所以應該回答不了各位的問題. 1. FLYER 載點更新... (天, 我機器都送人了) 2. 亂七八糟的破解問題.... 小弟老了.. 找年輕人去吧 哈哈~~~ ^^!
2011年9月18日 星期日
Android TCP 傳送與接收
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言