【中期檢查】 搭建Android伺服器並與瀏覽器互動總結一
最近在寫優麒麟手機助手這個專案,優麒麟手機助手是Ubuntu Kylin組織的開源專案:
在Windows平臺上有眾多的安卓手機管理工具,如360手機助手、騰訊手機管家、豌豆莢等,但是在Linux平臺下卻鮮有功能強大的客戶端出現。為了一解我等Linuxer在學習工作中手機管理的諸多不變,真心需要開發一款可在Linux環境下執行的圖形化安卓手機管理工具,且稱之為優麒麟手機助手。基於Android工具的各項功能進行開發,包括軟體介面界設計、互動命令執行等,使使用者感受不到adb的存在(當然,如果您足夠Hacker也可以拋棄adb基於資料線或wifi等連線方式,自己編寫超級手機hack程序,與Linux客戶端互動並執行各種手機管理功能。難度係數:瘋狂or自殺)。
這個專案希望能在Ubuntu Kylin作業系統下有一款獨特的Android手機管理軟體。經過和導師討論,最終決定先解決無線連線。
前些年,很多人會說在Android端搭建伺服器沒有意義,而隨著家庭區域網的發展,Android手機作為伺服器的意義也逐漸顯現,對於一個程式設計師來說,隨身攜帶一個伺服器本來就是很酷的事情。伺服器開啟,發一個Wifi,如果你蹭程式設計師的網路,那你就要小心了~
在這裡要特別感謝Jonas導師,一直以來我都太關注程式碼,很少思考,東西做完了也就扔了。程式碼本身是沒有意義的,且碼且珍惜吧。
什麼是TCP/IP協議 |
是用於計算機通訊的一組協議,
層次概述
從協議分層模型方面來講,TCP/IP由四個層次組成:網路介面層、網路層、傳輸層、應用層。
什麼是Socket |
它實際上是網路通訊的一種介面,基於不同的協議,有各種不同的Socket,比如有基於TCP協議的Socket和基於UDP協議的Socket以及基於藍芽協議的Socket,Android中使用的是Java的Socket模型。
Socket在計算機行業通常稱為”套接字“,用於描述IP地址和埠,是一個通訊鏈的控制代碼。這是一個比較抽象的概念。計算機是擁有埠的,每一個埠都可以有一個應用程式來進行通訊的使用,比如:80埠是HTTP協議所使用的埠,21埠是FTP協議所使用的埠,埠是計算機和外界通訊的介面,這些介面都是邏輯的介面,埠號取值的範圍是零到256乘以256減1,1024以下的埠都是作業系統使用的保留埠,以上的埠我們可以自由的來使用,不要和其他應用程式的埠衝突。
應用程式可以通過“套接字”向網路傳送請求或者應答網路的請求,這時候就把Socket分成了兩部分,一部分是伺服器端的Socket,這個Socket主要用來接收來自網路的請求,它一直監聽在某一個埠上。一部分是客戶端的Socket,這個Socket主要用來向網路傳送資料。
Http連線和Socket連線的區別 |
TCP/IP是網路傳輸協議,分為四層:網路介面層、網路層、傳輸層和應用層。
TCP協議和UDP協議都在傳輸層,而Socket則是針對TCP協議和UDP協議的程式設計介面,是網路通訊中端點的抽象表示。包含進行網路通訊必須的五種資訊:連線使用的協議,本地主機的IP地址,本地程序的協議埠,遠地主機的IP地址,遠地程序的協議埠。
HTTP協議則是存在於應用層,是建立在TCP協議之上的應用。HTTP連線是一種“短連線”,HTTP在每次請求結束後都會主動釋放連線,客戶端也無法向伺服器推送訊息。
最簡單的Android伺服器實現 |
總體來說Android端實現伺服器和Web伺服器沒什麼區別,通過ServerSocket監聽一個埠,併為每個客戶端分配一個ClientSocket。
通過Android API獲取在Wifi網路下的地址,並可通過同一網段下的PC瀏覽器進行訪問。
package com.example.androidserver;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
publicclass MainActivity extends Activity {
private TextView tv_ip;
private TextView tv_mac;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new ServerThread().start();
tv_ip = (TextView) findViewById(R.id.tv_ip);
tv_mac = (TextView) findViewById(R.id.tv_mac);
tv_ip.setText(getLocalIpAddress());
tv_mac.setText(getLocalMacAddress());
}
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
returntrue;
}
class ServerThread extends Thread{
publicvoid run() {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8888);
Socket client = null;
DataOutputStream out = null;
while (true) {
try {
// 監聽客戶端,呼叫ServerSocket的accept()方法,接受客戶端所發出的請求
//如果客戶端沒有傳送請求,會阻塞,一直等待accept函式的返回
System.out.println("開啟伺服器!" );
client = serverSocket.accept();
System.out.print("伺服器成功開啟!!");
//從Socket中得到InputStream物件
int temp = 0;
byte[] RecBuff = newbyte[1024];
InputStream inputStream = client.getInputStream();
System.out.println("server get inputstream" );
// 從Inputstream當中讀取客戶端的命令
temp = inputStream.read(RecBuff);
for(int i= 0;i
System.out.println(RecBuff[i]);
System.out.println("讀取完畢");
//向客戶端傳送資料
out =new DataOutputStream
((OutputStream) client.getOutputStream());
out.writeBytes("Android Server Test!");
System.out.println("before send");
out.flush();
System.out.println("server send message");
} catch (IOException e) {
// TODO Auto-generated catch blockg
e.printStackTrace();
} finally {
if (client != null) {
client.close();
}
最近在寫優麒麟手機助手這個專案,優麒麟手機助手是Ubuntu Kylin組織的開源專案:
在Windows平臺上有眾多的安卓手機管理工具,如360手機助手、騰訊手機管家、豌豆莢等,但是在Linux平臺下卻鮮有功能強大的客戶端出現。為了一解我等Linuxer在學習
前言:簡易上手node.js後,我們就可以在自己電腦上建立本地伺服器了。更多內容訪問:一、先上程式碼。//請求Node.js自帶的http模組。
var http = require('http'); 1、如果僅僅只是搭建 svn 伺服器:
(a)、先檢查 svn 是否已經安裝了
rpm -qa subversion #輸入這個命令後,會出現 subversion 版本號
(b)、如果沒有安裝,使用下面命令:
yum install subversio
一、下載安裝android studio軟體
目前最新的版本是3.1.2版本,下載即可.
下載完成之後開始安裝,安裝過程不難如下
選擇軟體的安裝路徑
安裝完成後啟動android studio
這裡預設選擇”do not i
前言: 學會了如何搭建了伺服器之後,就要開始運用伺服器來訪問靜態檔案了。
一、先上訪問靜態檔案的完整程式碼
(先走下流程,再解析程式碼)
//載入模組
var http = require(' 在 Linux 下搭建 Git 伺服器
目錄
① 安裝 Git
② 伺服器端建立 git 使用者,用來管理 Git 服務,併為 git 使用者設定密碼
③ 伺服器端建立 Git 倉庫
④ 客戶端 clone 遠端倉庫
⑤ 客
什麼是Samba伺服器
我們都知道培養計劃上的檔案都在伺服器上,隨時可以拷貝下來,但是卻不知道這是Samba實現的功能呢 Samba伺服器主要是用來實現SMB協議的,那SMB協議又是什麼呢,它是能讓我們在區域網上共享檔案和印表機的一種協議,也就是通過這個實現這個協議我們的客戶機就可以
在上一篇【OpenCV3.3】編譯原始碼並搭建VS2017+Windows開發環境中我們搭建了OpenCV的Windows開發環境,現在我們來搭建Android的C++開發環境。本文假設讀者的VS2017已經能夠正常編譯出Android程式,使用的NDK版本
1.下載VMware Workstation
2.建立虛擬機器
其他都是預設操作,虛擬機器名字根據自己喜好。
記憶體根據電腦情況,我選擇1G的,如果自己記憶體小,可以選512M。
3.編輯虛擬機器設定
虛擬機器-設定,將CD/DVD連線設定為ISO映像檔案,我用
安卓架構文章合集(a collection of android Architecture)
部落格原地址:
簡書部落格
github地址:
這是從各大平臺上參考的android架構文章,文章資料,主要參考自Info,推薦關注:
infoQ
1 Android
環境
CentOS 7 x64
安裝
在終端下執行下面命令來檢查系統是否安裝git
$ git --version
如果返回 “git: 未找到命令” 則需要安裝git。
執行下面命令安裝git和nfs
$ sudo yum install -y .com 不同的 ret log selector src spa 前端 混亂 一、引言
什麽是“閉包”?它既是前端程序中常常會碰到的一個千年大坑,也是這個大坑唯一可以解決自身的辦法。很多大牛對閉包都有自己的解釋,但每個人的解釋可能都不太一樣,看太 inf link title windows logs ews 事業部 巴巴 SM (一)用json-server搭建簡單的服務器
(搭建出來的服務器地址為localhonst:3000)
1.新建Mockjson文件夾,進入該文件夾目錄,運行命令
mes pro names sta 樹邊 std 存在 ace namespace UOJ_14_【UER #1】DZY Loves Graph_並查集
題面:http://uoj.ac/problem/14
考慮只有前兩個操作怎麽做。
每次刪除一定是從後往前刪, layout div ext widget service .py safety wid pre 上代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/08/31 09:43
#
【小程式】解決 Android機型上button按鈕出現邊框
問題描述: 在Android機型上出現button按鈕元件,在四個角上出現邊框。在模擬器、iPhone手機上沒有邊框。
問題原因: button控制元件上有一個偽元素(::after),雖然 最近在學習Html,小有進步變想著寫一個浪漫的靜態頁面給女朋友浪漫一下,那麼問題就來了,如何把我的網頁讓對網路一竅不通的女朋友看到,所以便想到了是用自己電腦作為伺服器的想法.百度以後整理如下:
首先搭建本地伺服器Mac自帶Apache伺服器,所以比較簡單一: 開啟終端
//開啟apache:需要輸入密碼s
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Cons
硬碟使用久了就會有壞道,或者機械損傷的壞道,使用windows自帶命令封鎖壞道可以維持硬碟一段時間壽命(1年左右)。
新建記事本重新命名為“chkdsk_xiao.bat”,將一下內容複製進去:
@echo off
set /p dsk_name=please inpu
題目連結:傳送門
中文題目就不闡述題意了,我最開始的想法是種類並查集,但是細想一下,發現並不可行,因為題目沒有告訴有多少型別。
做法:關鍵問題是處理等號的兩個點,其實兩個點相等,就相當於這兩個人的排名是一樣的,我們用並查集搞定這麼些個相等排名的點,之後把有 相關推薦
【中期檢查】 搭建Android伺服器並與瀏覽器互動總結一
【node.js】搭建本地伺服器
【Centos】搭建 SVN 伺服器
【android筆記】android開發環境搭建--android studio安裝與配置
【node.js】搭建可訪問本地檔案的伺服器①
【git】搭建git伺服器 在 Linux 下搭建 Git 伺服器
【Linux】搭建Samba伺服器詳細介紹
【OpenCV3.3】搭建VS2017+Android開發環境
【linux學習】建立虛擬機器並搭建叢集(1)
不容錯過,最全的安卓架構合集【從零開始搭建android框架系列(2)】
【Git】搭建Git伺服器——本地協議伺服器
【重點突破】——如何快速識別並解決“閉包問題”?
【小程序】搭建本地https服務器(windows)
UOJ_14_【UER #1】DZY Loves Graph_並查集
【Python + uiaotumator2】之Android—APP自動化簡易例子
【小程式】解決 Android機型上button按鈕出現邊框
java -Mac搭建本地伺服器並對映到外網
【C#作業】學生成績新增並排序,錯誤則丟擲異常
【硬碟檢查】chkdsk 命令使用
【HDU 1811】 Rank of Tetris 並查集+拓撲