![](https://csdnimg.cn/release/download_crawler_static/87412369/bg1.jpg)
在 wifi 局域网下,手机可以和电脑通过 socket 通信。手机做服务端,电脑做客户端;也可
以反过来,电脑做服务端,手机做客户端。
下面介绍的是手机作为服务端,电脑使用 MFC 编程作为客户端,原理是,手机建立一个
ServerSocket,并获取自己的 ip 地址和端口 port;然后电脑通过 socket 连接手机的 ip:port。
![](https://csdnimg.cn/release/download_crawler_static/87412369/bg2.jpg)
手机建立 socketServer 代码
1. private ServerSocket serverSocket = null;
2. private Runnable mcreateRunnable = new Runnable()
3. {
4. public void run()
5. {
6. try {
7. serverSocket = new ServerSocket(0);//系统分配端口
8. getLocalIpAddress();//获得手机的 ip 地址
9. //方法用于等待客服连接
10. mSocketServer =
serverSocket.accept();
11. //接受客服端数据 BufferedReader 对象
12. mBufferedReaderServer = new BufferedReader(new
InputStreamReader(mSocketServer.getInputStream()));
![](https://csdnimg.cn/release/download_crawler_static/87412369/bg3.jpg)
13. //给客服端发送数据
14. mPrintWriterServer = new
PrintWriter(mSocketServer.getOutputStream(),true);
15.
16. } catch (IOException e) {
17. // TODO Auto-generated catch block
18. e.printStackTrace();
19. }
20. }
21. };
复制代码
手机上获取的 ip 地址代码
1. public String getLocalIpAddress()
2. {
3. try {
4. for (Enumeration en=NetworkInterface.getNetworkInterfaces();
en.hasMoreElements();)
5. {
6. NetworkInterface intf = en.nextElement();
7. for (Enumeration
enumIpAddr=intf.getInetAddresses();enumIpAddr.hasMoreElements();)
8. {
9. InetAddress inetAddress = enumIpAddr.nextElement();
10. //if (!inetAddress.isLoopbackAddress())
11. {
12. //if(inetAddress.isSiteLocalAddress())
13. {
14. String ip = "请连接 IP:
"+inetAddress.getHostAddress()+":"
15. + serverSocket.getLocalPort()+ "";
16. }