大二的悲催期末考试结束了,暑假要认真学点儿技术了。学习了技术不用的话很快就会忘,还是记下来加深下印象。
Socket 编程是比较底层的网络编程方式,其他高级的通信协议都是建立在此基础上的,所以在学习android网络通信之前先了解下Socket编程。
Socket编程中,Socket用来建立客户端程序,ServerSocket在服务端建立一个新的监听的端口,用来监听客服端Socket的连接,当监听到连接后,ServerSocket就获得一个Socket的实例,打开输入输出流进行通信。
先在myeclipse建立一个服务器的项目,新建一个java类MyServer,监听android客户端Socket的连接。ServerSocket监听的是8087的端口号。
- <span style="font-size:24px;">package com.test;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class MyServer {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- try{
- //实例化服务器的套接字
- ServerSocket socket= new ServerSocket(8087);
- while(true){
- //监听获得客户端的套接字
- Socket client = socket.accept();
- //获得输出流
- OutputStream out= client.getOutputStream();
- String msg="got it....";
- out.write(msg.getBytes());
- client.close();
- }
- }catch (IOException e){
- e.printStackTrace();
- }
- }
- }</span><span style="font-size:18px;">
- </span>
- <span style="font-size:24px;"><?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#ffffff"
- >
- <TextView
- android:id="@+id/text"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textColor="#000000"
- android:textSize="30dp"
- />
- </LinearLayout></span><span style="font-size:18px;">
- </span>
- <span style="font-size:24px;">package com.test;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.Socket;
- import java.net.UnknownHostException;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.TextView;
- /**
- * @author liguiwu
- *
- */
- public class ClientActivity extends Activity {
- private TextView text;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- text=(TextView) findViewById(R.id.text);
- try{
- Socket socket= new Socket("192.168.1.101",8087);
- InputStream in = socket.getInputStream();
- byte[] buffer =new byte[in.available()];
- in.read(buffer);
- String msg= new String(buffer);
- text.setText(msg);
- }catch (UnknownHostException e) {
- // TODO: handle exception
- e.printStackTrace();
- }catch (IOException e) {
- // TODO: handle exception
- }
- }
- }</span>
![](https://img-my.csdn.net/uploads/201207/03/1341245472_8379.jpg)