android使用socket进行本地PC通信

一、编写思路

   android使用socket进行本地PC通信_第1张图片

 手机端为客户端,PC为服务端,手机访问PC通信,需建立一个虚拟的通信链路,客户端通过socket发送请求到服务端,服务端通过serversocket监听来自客户端的socket请求,并生成一个socket。这样就建立了一条虚拟通信网络,然后再通过相关方法进行通信。项目需在服务端建立一个java程序,客户端建立一个android程序。

二、代码编写

   (一) PC端的代码编写——java程序

          (1)相关方法

                 Socket accept() :如果接收到一个来自客户端的socket的连接请求,该方法将返回一个与连接客户端对应的socket,否则该方法一直处于等待状态,线程也被阻塞。

                 Serversocket(int port ): 用指定的端口port来创建一个serversocket。该端口应该是一个有效的端口整数值:0 --65535 。查询PC的端口:提示命令符下输入                  

                                                    netstat -na ,选择上面没有的端口。

           (2)java代码

                 

                   package com.myServer;

                   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) throws IOException {
                       // TODO Auto-generated method stub

                           // 创建一个serversocket,用于监听客户端socket的连接请求
                          ServerSocket ss = new ServerSocket(3000);
                 

                           // 采用循环不断接受来自客户端的请求
                           while (true) {
                 

                           // 每当接受到客户端socket的请求,服务端也产生一个socket
                           Socket s = ss.accept();
                           OutputStream os = s.getOutputStream();
                           os.write("您好,您收到了服务器的信念祝福\n".getBytes("utf-8"));

                           // 关闭输出流,关闭socket
                          os.close();
                          s.close();
                                }

                            }
                        }

 

    (二)android程序

           (1)MainActivity.java

                  package com.myServer;

                  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) throws IOException {
                      // TODO Auto-generated method stub

                     // 创建一个serversocket,用于监听客户端socket的连接请求
                         ServerSocket ss = new ServerSocket(3000);
                     // 采用循环不断接受来自客户端的请求
                         while (true) {
                     // 每当接受到客户端socket的请求,服务端也产生一个socket
                         Socket s = ss.accept();
                         OutputStream os = s.getOutputStream();
                         os.write("您好,您收到了服务器的信念祝福\n".getBytes("utf-8"));
                     // 关闭输出流,关闭socket
                         os.close();
                         s.close();
                             }

                          }
                      }

 

           (2)activity_main.xml

                   

                  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:tools="http://schemas.android.com/tools"
                  android:id="@+id/LinearLayout1"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical"
                  android:paddingBottom="@dimen/activity_vertical_margin"
                  android:paddingLeft="@dimen/activity_horizontal_margin"
                  android:paddingRight="@dimen/activity_horizontal_margin"
                  android:paddingTop="@dimen/activity_vertical_margin"
                  tools:context=".MainActivity" >
                  <EditText
                          android:id="@+id/show"
                          android:layout_width="fill_parent"
                          android:layout_height="wrap_content"
                          android:editable="false"
                          android:cursorVisible="false"
                    />

                  </LinearLayout>

           

                (3)AndroidManifest.xml     

                        

                      <?xml version="1.0" encoding="utf-8"?>
                      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                      package="com.myclient"
                      android:versionCode="1"
                      android:versionName="1.0" >

                      <uses-sdk
                            android:minSdkVersion="8"
                            android:targetSdkVersion="14" />

                       <uses-permission android:name="android.permission.INTERNET" />

                     <application
                         android:allowBackup="true"
                         android:icon="@drawable/ic_launcher"
                         android:label="@string/app_name"
                         android:theme="@style/AppTheme" >
                     <activity
                         android:name="com.myclient.MainActivity"
                         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>

你可能感兴趣的:(android)