android局域网socket通信
1.台式机没有无线网卡,就用的360随身wifi开启了网络共享模式,相当于建了一个热点。
Windows下:运行->cmd->ipconfig /all,查询本地IP地址:本次测试为172.17.187.1
2.将手机连接到WIFI热点,在WIFI连接的高级选项菜单,查询到手机端获取的IP地址为:172.17.187.2,可见我的台式机和手机已经在同一局域网中。
3.开始编写服务器端程序
在eclipse中新建JAVA项目,保留Main函数。
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(30000);
//        ServerSocket ss=new ServerSocket();
//        String ip="172.17.187.1";  //监听无线网卡IP
////        String ip="0.0.0.0";  //监听本地所有IP
//        int port=30633;
//        InetSocketAddress addr=new InetSocketAddress(ip, port);
//        ss.bind(addr);
        System.out.println("The sever is started!");
        while(true){
            Socket s=ss.accept();
            String LocalSocketAddress().toString();
            System.out.println("My address is:"+IPaddr);
            System.out.println("The client is connected!");
            OutputStream OutputStream();
            os.write("您好,您收到服务器的反馈!".getBytes("UTF-8"));
            s.close();
        }
    }
}
服务器端函数很简单,要注意一点就是,new ServerSocket()的时候,若没有绑定监听IP,则会监听本机所有IP,即ip="0.0.0.0"这种情况,所以客户端填写socket的目的IP是我的台式机的WIFI网卡ip也一定会被监听到,当然绑定了监听IP为WIFI网卡ip也没问题。
4.客户端程序
客户端启动线程,负责从服务器端接收反馈信息,将反馈信息填写到UI控件中。
new Thread(){
            @Override
            publicvoid run() {
                try {
                    //121.248.55.120
                    Socket socket=socket通信在哪一层new Socket("121.248.55.120",30000);
        BufferedReader br=new BufferedReader(new InputStream()));
                    String adLine();
                    String LocalAddress().toString();
                    txt1.append("来自服务器的问候:"+line+"\n");
                    txt1.append(myip);
                    br.close();
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
4.运行程序
将服务器端代码,右键工程,run as-> JAVA PROJECT,则启动服务器端程序,服务器的accept()会阻塞,直到客户端接入。然后运行客户端程序,发布到调试用的真机上。运行成功!