首先下面的代码是可用正常的。
问题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一章、蓝牙一章、网页一章,从目录来看似乎这些编程不是一种方法
好像这并没有用到网络
好像这并没有用到网络