標籤:android style http io ar os 使用 sp java
Android平台有三種網路介面可以使用,他們分別是:java.net.*(標準Java介面)、Org.apache介面和Android.net.*(Android網路介面)。下面分別介紹這些介面的功能和作用。
1.標準Java介面
java.net.*提供與連網有關的類,包括流、資料包通訊端(socket)、Internet協議、常見Http處理等。比如:建立URL,以及URLConnection/HttpURLConnection對象、設定連結參數、連結到伺服器、向伺服器寫資料、從伺服器讀取資料等通訊。這些在Java網路編程中均有涉及,我們看一個簡單的socket編程,實現伺服器回傳用戶端資訊。
服務端:
public class Server implements Runnable{
@Override
public void run() {
Socket socket = null;
try {
ServerSocket server = new ServerSocket(18888);
//迴圈監聽用戶端連結請求
while(true){
System.out.println("start...");
//接收請求
socket = server.accept();
System.out.println("accept...");
//接收用戶端訊息
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = in.readLine();
//發送訊息,向用戶端
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println("Server:" + message);
//關閉流
in.close();
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if (null != socket){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//啟動伺服器
public static void main(String[] args){
Thread server = new Thread(new Server());
server.start();
}
}
用戶端,MainActivity
public class MainActivity extends Activity {
private EditText editText;
private Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText)findViewById(R.id.editText1);
button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Socket socket = null;
String message = editText.getText().toString()+ "\r\n" ;
try {
//建立用戶端socket,注意:不能用localhost或127.0.0.1,Android模擬器把自己作為localhost
socket = new Socket("<span style="font-weight: bold;">10.0.2.2</span>",18888);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter
(socket.getOutputStream())),true);
//發送資料
out.println(message);
//接收資料
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = in.readLine();
if (null != msg){
editText.setText(msg);
System.out.println(msg);
}
else{
editText.setText("data error");
}
out.close();
in.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally{
try {
if (null != socket){
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
}
}
Android的網路與通訊(一)