首先下面的代码是可用正常的。
问题1,手机端的代码有3个异常处理,本人之前先是用 throws 语句但是却不能编译过去,无论把 throws 放在 run 函数后面还是 onCreate 函数后面都无法编译。这是为什么
问题2,服务器端很明显是把IP、端口、数据都混合在一个流里面接受,然后用3个函数来分别读取。那么问题来了,本人假如服务器用Windows API在 Visual C++编写怎么办,或用C#写服务器。
问题3,这个问题与下面的代码无关。发布下面的手机程序到手机运行的时候,手机并未提示程序要求网络权限或WIFI权限或移动网络权限,但是程序确实可用。通常在安装其他软件的时候手机都会提示某某程序要求网络权限,然后询问能否允许的。之后本人搜了一下关于安卓网络编程方面的书,发现某些书是把socket编程单独列为一章、WIFI单独一章、NFC一章、蓝牙一章、网页一章,从目录来看似乎这些编程不是一种方法。
问题4,这个问题与下面代码无关。最近几年好像智能家居挺火热的,不知道有谁接触过。听说有人在下班的时候远程家里的电饭锅和空调开机,进家门的时候直接就吃饭了。这对路由器、空调、电饭锅等硬件有什么要求。
问题1,手机端的代码有3个异常处理,本人之前先是用 throws 语句但是却不能编译过去,无论把 throws 放在 run 函数后面还是 onCreate 函数后面都无法编译。这是为什么
问题2,服务器端很明显是把IP、端口、数据都混合在一个流里面接受,然后用3个函数来分别读取。那么问题来了,本人假如服务器用Windows API在 Visual C++编写怎么办,或用C#写服务器。
问题3,这个问题与下面的代码无关。发布下面的手机程序到手机运行的时候,手机并未提示程序要求网络权限或WIFI权限或移动网络权限,但是程序确实可用。通常在安装其他软件的时候手机都会提示某某程序要求网络权限,然后询问能否允许的。之后本人搜了一下关于安卓网络编程方面的书,发现某些书是把socket编程单独列为一章、WIFI单独一章、NFC一章、蓝牙一章、网页一章,从目录来看似乎这些编程不是一种方法。
问题4,这个问题与下面代码无关。最近几年好像智能家居挺火热的,不知道有谁接触过。听说有人在下班的时候远程家里的电饭锅和空调开机,进家门的时候直接就吃饭了。这对路由器、空调、电饭锅等硬件有什么要求。
//运行于手机真机的代码 package com.example.administrator.ffffff; import android.app.Activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketException; import java.net.UnknownHostException; public class MainActivity extends Activity { EditText show; protected void onCreate(Bundle savedInstanceState)//throws SocketException,UnknownHostException, IOException { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show = (EditText)findViewById(R.id.show); new Thread() { public void run() { try { //1,创建UDP服务,通过 DatagramSocket 对象 DatagramSocket ds = new DatagramSocket(); //2,确定数据,并封装成数据包 byte[] buf = "android: udp ge men lai le".getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.101"), 10000); //3,通过socket服务将已有的数据包发送出去,通过send发 ds.send(dp); //4,关闭资源 ds.close(); } catch( SocketException e) {} catch (UnknownHostException e) {} catch (IOException e) {} } }.start(); } }
//运行于 Windows 的代码 import java.util.concurrent.locks.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.*; import java.net.*; public class recv { public static void main(String[]args)throws Exception { //1、创建UDP socket,建立端点 DatagramSocket ds = new DatagramSocket(10000); //2、定义数据包,用于存储数据 byte [] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); //3、通过服务的recvive方法讲收到的数据存入数据包中 ds.receive(dp); //4、通过数据包的方法获取其中的数据 String ip = dp.getAddress().getHostAddress(); String date = new String(dp.getData(), 0, dp.getLength()); int port = dp.getPort(); System.out.println(ip); System.out.println(date); System.out.println(port); ds.close(); } }
解决方案
20
问题3,这个问题与下面的代码无关。发布下面的手机程序到手机运行的时候,手机并未提示程序要求网络权限或WIFI权限或移动网络权限,但是程序确实可用。通常在安装其他软件的时候手机都会提示某某程序要求网络权限,然后询问能否允许的。之后本人搜了一下关于安卓网络编程方面的书,发现某些书是把socket编程单独列为一章、WIFI单独一章、NFC一章、蓝牙一章、网页一章,从目录来看似乎这些编程不是一种方法
好像这并没有用到网络
好像这并没有用到网络