《Android智能穿戴设备开发指南》——第6章,第6.4节使用Socket发送求救信号

    xiaoxiao2024-04-17  8

    本节书摘来自异步社区《Android智能穿戴设备开发指南》一书中的第6章,第6.4节使用Socket发送求救信号,作者 王长青,更多章节内容可以访问云栖社区“异步社区”公众号查看

    6.4 使用Socket发送求救信号Android智能穿戴设备开发指南通过本章前面内容的学习,已经了解了Java应用中Socket网络编程的基本知识。在Android平台中,可以使用相同的方法用Socket实现数据传输功能。本节将通过一个具体实例的实现过程,来讲解在Android穿戴设备中使用Socket发送求救信号的基本方法。

    实例6-1 使用Socket发送求救信号,源码路径:daima6socket。

    本实例的具体实现流程如下。

    ① 首先实现服务器端,使用Eclipse新建一个名为android_server的Java工程,然后编写服务器端的实现文件AndroidServer.java,功能是创建Socket对象client以接收客户端的请求,并创建BufferedReader对象in向服务器发送消息。文件AndroidServer.java的具体实现代码如下。

    public class AndroidServer implements Runnable{   public void run() {     try {       ServerSocket serverSocket=new ServerSocket(54321);       while(true)       {         System.out.println("等待接收用户连接:");         //接收客户端的请求         Socket client=serverSocket.accept();         try         {           //接收客户端的信息           BufferedReader in=new BufferedReader(new InputStreamReader(client.           getInputStream()));           String str=in.readLine();           System.out.println("read: "+str);           //向服务器发送消息           PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStream Writer(client.getOutputStream())),true);           out.println("return  "+str);           in.close();           out.close();         }catch(Exception ex)         {           System.out.println(ex.getMessage());           ex.printStackTrace();         }         finally         {           client.close();           System.out.println("close");         }       }     } catch (IOException e) {       System.out.println(e.getMessage());     }   }   public static void main(String [] args)   {     Thread desktopServerThread=new Thread(new AndroidServer());     desktopServerThread.start();   } }

    ② 开始实现客户端的测试程序,使用Eclipse新建一个名为testSocket的Android工程,编写布局文件main.xml,在主界面插入一个信息输入文本框和一个“发送”按钮。文件main.xml的具体实现代码如下。

    <?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">   <EditText android:id="@+id/edit" android:layout_width="fill_parent"     android:layout_height="wrap_content" />   <Button android:id="@+id/but1" android:layout_width="wrap_content"     android:layout_height="wrap_content" android:text="发送" />   <TextView android:id="@+id/text1" android:layout_width="fill_parent"     android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

    ③ 编写测试文件TestSocket.java,其功能是获取输入框的文本信息,并将信息发送到“192.168.2.113”。文件TestSocket.java的具体实现代码如下。

    //客户端的实现 public class TestSocket extends Activity {   private TextView text1;   private Button but1;   private EditText edit1;   private final String DEBUG_TAG="mySocketAct";   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     text1=(TextView)findViewById(R.id.text1);     but1=(Button)findViewById(R.id.but1);     edit1=(EditText)findViewById(R.id.edit);     but1.setOnClickListener(new Button.OnClickListener()     {       @Override       public void onClick(View v) {         Socket socket=null;         String mesg=edit1.getText().toString()+"\r\n";         edit1.setText("");         Log.e("dddd", "sent id");         try {           socket=new Socket("192.168.2.113",54321);           //向服务器发送信息           PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStream           Writer(socket.getOutputStream())),true);           out.println(mesg);           //接收服务器的信息           BufferedReader br=new BufferedReader(new InputStreamReader(socket.           getInputStream()));           String mstr=br.readLine();           if(mstr!=null)           {             text1.setText(mstr);           }else           {             text1.setText("数据错误");           }           out.close();           br.close();           socket.close();         } catch (UnknownHostException e) {           e.printStackTrace();         } catch (IOException e) {           e.printStackTrace();         }catch(Exception e)         {           Log.e(DEBUG_TAG,e.toString());         }       }           });   } }

    ④ 在文件AndroidManifest.xml中添加访问网络的权限,具体代码如下。

    到此为止,整个实例介绍完毕,执行的效果如图6-2所示。

    相关资源:Android智能穿戴设备开发指南
    最新回复(0)