欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android系统通过socket与pc通信的简单范例代码,androidsocket,在Android中可以直

来源: javaer 分享于  点击 2681 次 点评:71

Android系统通过socket与pc通信的简单范例代码,androidsocket,在Android中可以直


在Android中可以直接利用java中的Socket与ServerSocket构建socket通信。 代码的运行环境: pc端:普通pc,作为服务器,已经设置有域名(通过动态域名软件设置),在5648端口进行监听。 Android手机客户端:android2.3设备。

代码运行一切正常,客户端发送的文字将在服务器端接收并显示,服务器每接收到客户端的一行文字,就会返回一个从0开始递增的整数,此整数将在客户端显示出来。pc端代码:
package test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Test implements Runnable{    /**     * @param args     */    int max=10;      //最大开启线程数    int i=0;         //回复数字    int temp;    ServerSocket serverSocket;    Socket socket[];    public Test(){        try {            serverSocket=new ServerSocket(5648);    //在5648端口进行侦听        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            System.out.println("can't initate ServerSocket!");            return;        }        socket=new Socket[max];        System.out.println("waiting for connect");        try {            while((socket[i]=serverSocket.accept())!=null){                temp=i;                i++;                new Thread(this).start();           //每侦听到一个客户端的连接,就会开启一个工作线程            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public static void main(String[] args) {        new Test();    }    @Override    public void run() {        Socket sk=socket[temp];        System.out.println("accept:"+sk.getInetAddress().getHostAddress());        InputStream is=null;        OutputStream os=null;        BufferedReader br=null;        PrintWriter pw=null;        try {            is=sk.getInputStream();            os=sk.getOutputStream();            br=new BufferedReader(new InputStreamReader(is));            pw=new PrintWriter(os);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            try {                sk.close();            } catch (IOException e1) {                // TODO Auto-generated catch block                e1.printStackTrace();            }            return;        }        String str;        try {            int m=0;            while((str=br.readLine())!=null){                System.out.println(str);                pw.println(m);                pw.flush();                m++;            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
                                  android设备客户端代码:MainActivity.java;代码:
package com.tobacco.phonetest;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener,Runnable{    private Button button;    private EditText editText;    private Socket socket;    private PrintWriter pw;    private BufferedReader br;    private Handler handler;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        handler=new Handler();        button=(Button)findViewById(R.id.button);        button.setOnClickListener(this);        editText=(EditText)findViewById(R.id.edittext);        try {            socket=new Socket("tobacco5648.xicp.net",5648);        //连接到tobacco5648.xicp.net的5648端口} catch (UnknownHostException e) {            // TODO Auto-generated catch block            e.printStackTrace();            Log.e("socket","unknown host");        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            Log.e("socket","io execption");        }        if(socket==null){            Log.e("socket","null");        }        else            try {            pw=new PrintWriter(socket.getOutputStream());            br=new BufferedReader(new InputStreamReader(socket.getInputStream()));            if(pw!=null&&br!=null){                new Thread(this).start();            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }    public void onClick(View view) {        if(view==button){            String str;            str=editText.getText().toString();            pw.println(str);            pw.flush();        }    }    public void run() {        try {            String str;            while((str=br.readLine())!=null){                final String s=str;                handler.post(new Runnable(){                    public void run() {                        Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();                    }});            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
相关栏目:

用户点评