Android手机通过socket与pc通信
Android手机通过socket与pc通信
在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();
- }
- }
- }
|
评论暂时关闭