最も単純なソケットは、ロジスティクスネットワークのセンサーとデータを交換します

メモを取る

最も簡単なソケットは、ロジスティクスネットワークのセンサーとデータを交換することです

ログインは、ユーザーログインとデバイスログインに分けられます

1.ユーザーログイン(SSLSOCKET)
{"M": "login"、 "ID": "xx1"、 "K": "xx2"} \ n // json形式
最も単純なSSLSocket基本テストが利用可能です

public class net {
    
    

	public static void main(String[] args) throws InterruptedException, NoSuchAlgorithmException,
			KeyManagementException, UnknownHostException, IOException {
    
    

		X509TrustManager x509m = new X509TrustManager() {
    
    

			// 返回受信任的X509证书数组
			@Override
			public X509Certificate[] getAcceptedIssuers() {
    
    
				return null;
			}

			/*
			 * 该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。
			 * 在实现该方法时,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。
			 */
			@Override
			public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    
    
			}

			/*
			 * 该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,
			 * 因此我们只需要执行默认的信任管理器的这个方法。JSSE中,默认的信任管理器类为TrustManager。
			 */
			@Override
			public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    
    
			}
		};

		SSLContext s = SSLContext.getInstance("SSL");
		s.init(null, new TrustManager[] {
    
     x509m }, new java.security.SecureRandom());
		SSLSocketFactory factory = s.getSocketFactory();

		SSLSocket socket = (SSLSocket) factory.createSocket("www.bigiot.net", 8585);//SSL登录地址

		OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

		System.out.println("内容为:" + in.readLine());// 服务器连接成功返回信息
		out.write(("{\"M\":\"login\",\"ID\":\"xxx\",\"K\":\"xxx\"}\n"));//json格式直接转义
		out.flush();
		System.out.println("内容为:" + in.readLine());// 服务器登录成功返回信息
		while (true) {
    
    

			System.out.println("内容为:" + in.readLine());// 接受服务器转发过来的信息

		}
   }
}

1.デバイスログインアナログセンサー(SOCKET)
{"M": "checkin"、 "ID": "xx1"、 "K": "xx2"} \ n // json形式

public class net {
    
    

	public static void main(String[] args) {
    
    
	 int key = 1;
		try {
    
    
			Socket socket = new Socket("www.bigiot.net", 8181);// 打开接口
		    OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());
		    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while (key == 1) {
    
    
				Scanner input = new Scanner(System.in);
				System.out.println("输入命令, 按下回车键。");
				int ss = input.nextInt();
				
				if (socket.isConnected()) {
    
    
					switch (ss) {
    
    
					case 1:
						break;
					case 2:
	                    out.write(("{\"M\":\"checkin\",\"ID\":\"xxx\",\"K\":\"xxxxx\"}\n"));break;	
					case 3:
						out.write("{\"M\":\"status\"}\n");break;//检查状态		
					case 4:
						out.write("{\"M\":\"update\",\"ID\":\"xxxx\",\"V\":{\"17435\":\"35\"}}\n");break;
						//模拟传感器发送数据到服务器 这个数据被用户接收		
				case 5:
						key = 0;
						input.close();
						socket.close();// 关闭客户端
						System.out.println("关闭客户端");
						break;
					}
				}
				out.flush();
				System.out.println("内容为:" + in.readLine());
		}
		}
		catch (IOException e) {
    
    
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}

おすすめ

転載: blog.csdn.net/kk1271/article/details/108942329