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

Android应用通过socket与pc通信的示例代码,androidsocket,在Android中可以直

来源: javaer 分享于  点击 676 次 点评:165

Android应用通过socket与pc通信的示例代码,androidsocket,在Android中可以直


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

代码运行一切正常,客户端发送的文字将在服务器端接收并显示,服务器每接收到客户端的一行文字,就会返回一个从0开始递增的整数,此整数将在客户端显示出来。pc端代码:```java

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();}@Overridepublic 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代码:```javaimport 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();        }    }}
相关栏目:

用户点评