Android Socket编程

来源:互联网 发布:网络运营方面的书籍 编辑:程序博客网 时间:2024/05/27 00:30

 Socket  SocketServer编程可以说是比较底层的编程方式,对于其他的高级协议都是建立在此基础上,而且Socket 编程是跨平台的,可以在异构语音之间进行通信。

           Socket 网络连接模型

           

           Socket编程实例:

          创建一个java 类作为服务器,android 应用程序作为客户端

          服务器端代码:

[java] view plaincopy
  1. package com.server;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.OutputStream;  
  5. import java.net.ServerSocket;  
  6. import java.net.Socket;  
  7. import java.text.SimpleDateFormat;  
  8.   
  9. public class MyServer {  
  10.       
  11.     private  static int count=0;  
  12.     public static void main(String[]args){  
  13.           
  14.         try {  
  15.             //实例化服务器套接字 设置端口号8888  
  16.             ServerSocket server=new ServerSocket(8888);  
  17.             while(true){  
  18.                 //连接编号设置  
  19.                 count=count+1;  
  20.                 //时间格式  
  21.                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");  
  22.                 //实例化客户端  
  23.                 Socket client=server.accept();  
  24.                 //实例化时间  以及 id  
  25.                 System.out.println(count+":"+sdf.format(System.currentTimeMillis()));  
  26.                 //获取输出流  
  27.                 OutputStream out=client.getOutputStream();  
  28.                 //输出字符串  
  29.                 String msg="Hello,Android!";  
  30.                 //写字符串  
  31.                 out.write(msg.getBytes());  
  32.             }  
  33.         } catch (IOException e) {  
  34.             // TODO Auto-generated catch block  
  35.             e.printStackTrace();  
  36.         }  
  37.           
  38.           
  39.     }  
  40. }  

         android 客户端代码:

     res/layout/main.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <Button   
  8.         android:id="@+id/rev"  
  9.         android:text="开始接收"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"/>  
  12.       
  13.     <TextView  
  14.         android:id="@+id/receiver"  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:text="Is Reveiving...." />  
  18.   
  19. </LinearLayout>  



AndroidManifest.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.client"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk android:minSdkVersion="10" />  
  8.     <uses-permission android:name="android.permission.INTERNET"/>  
  9.     <application  
  10.         android:icon="@drawable/ic_launcher"  
  11.         android:label="@string/app_name" >  
  12.         <activity  
  13.             android:name=".MyClientActivity"  
  14.             android:label="@string/app_name" >  
  15.             <intent-filter>  
  16.                 <action android:name="android.intent.action.MAIN" />  
  17.   
  18.                 <category android:name="android.intent.category.LAUNCHER" />  
  19.             </intent-filter>  
  20.         </activity>  
  21.     </application>  
  22.   
  23. </manifest>  


MyClientActivity .java 实现客户端  activity  

[java] view plaincopy
  1. package com.client;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.net.Socket;  
  6. import java.net.UnknownHostException;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.TextView;  
  14.   
  15. public class MyClientActivity extends Activity {  
  16.     /** Called when the activity is first created. */  
  17.     private Button rev=null;  
  18.     private TextView revtext=null;  
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.main);  
  23.         rev=(Button)findViewById(R.id.rev);      
  24.         revtext=(TextView)findViewById(R.id.receiver);  
  25.         rev.setOnClickListener(new receiverlistenr());  
  26.     }  
  27.     class receiverlistenr implements OnClickListener{  
  28.         public void onClick(View v) {  
  29.             // TODO Auto-generated method stub  
  30.             try {  
  31.                 //实例化Socket  
  32.                 Socket socket=new Socket("169.254.202.149",8888);  
  33.                 //获得输入流  
  34.                 InputStream in=socket.getInputStream();  
  35.                 //缓冲区  
  36.                 byte[] buffer=new byte[in.available()];  
  37.                 //读取缓冲区  
  38.                 in.read(buffer);  
  39.                 //转换字符串  
  40.                 String msg=new String(buffer);  
  41.                 //设置文本框的字符串  
  42.                 revtext.setText(msg);  
  43.             } catch (UnknownHostException e) {  
  44.                 // TODO Auto-generated catch block  
  45.                 e.printStackTrace();  
  46.             } catch (IOException e) {  
  47.                 // TODO Auto-generated catch block  
  48.                 e.printStackTrace();  
  49.             }  
  50.               
  51.         }  
  52.     }  
  53. }