Ⅰ android設備怎麼設置tcpip
1. 使用USB數據線連接設備(此方法需配置adb環境變數,也可直接進入adb工具目錄執行\android-sdk-windows\platform-tools\)。
2. 命令輸入adb tcpip 5555 ( 5555為埠號,可以自由指定)。
3. 斷開 USB數據,此時可以連接你需要連接的USB設備。
4. 再命令輸入 adb connect <設備的IP地址>:5555
後面就可以使用ADB ,DDMS 來調試Android應用或顯示Logcat 消息。
5. 如果需要恢復到USB數據線,可以在命令行輸入adb usb
註: Android設備的IP地址可以通過(設置->關於手機->狀態信息)查看
Ⅱ 我怎樣才能連接與亞行至Android通過TCP
手動處理 從您的設備,如果它是植根 根據對XDA開發後,您可以啟用adb通過WiFi從裝置su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
並且您可以禁用它,並返回亞行與監聽USBsetprop service.adb.tcp.port -1
stop adbd
start adbd
從電腦,如果你有USB連接已經 這是更容易切換無線網路,如果你已經有了USB訪問。從該行已在設備通過USB介面,連接問題adb tcpip 5555
adb connect 192.168.0.101:5555
一定要更換192.168.0.101與實際分配給您的設備的IP地址。 告訴亞行後台程序返回到監聽通過USBadb usb
應用自動化進程 也有在谷歌播放的自動執行此過程的幾個應用程序 CodeGo.net,快速搜索建議adbWireless,支持WiFiadb和adb的WiFi。所有這些都需要root許可權,但adbWireless需要更少的許可權。
2. 這是非常簡單的。 首先確保你的手機是植根。 從市場上下載一個終端模擬器(有很多是free的)。 請確保您的Android連接到您的無線網路,並獲得無線IP地址。 打開終端程序並鍵入:su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
現在去(假設你視窗)在桌面上創建一個快捷方式為「cmd.exe的」(不含引號)。 右鍵單擊CMD快捷方式並選擇"Run as Administrator"改變你的android-sdk-windows\tools folder類型:adb connect ***wifi.ip.address***:5555
(example: adb connect 192.168.0.105:5555)
亞行現在應該說你已連接。 注意:如果你太快給它可能會失敗。所以,如果你說這是行不通的嘗試至少2 5秒鍾的時間間隔。
3. 我知道這是舊的,但我想補充我的2美分- 我需要得到兩個USB和TCPIP工作的adb(不要問),所以我做了以下(使用方向其他人張貼的XDA開發) 運用adb shell:su
#set the port number for adbd
setprop service.adb.tcp.port 5555
#run the adbd daemon *again* instead of doing stop/start, so there
#are 2 instances of adbd running.
adbd &
#set the port back to USB, so the next time adb is started it's
#on USB again.
setprop service.adb.tcp.port -1
exit
4. 正如布賴恩說: 根據對XDA開發後,您可以啟用adb通過WiFi從裝置 對應setProp service.adb.tcp.port 5555 停止adbd 啟動adbd 並且您可以禁用它,並返回亞行與監聽USB 對應setProp service.adb.tcp.port-1 停止adbd 啟動adbd 如果你有USB連接已經,它是更容易切換無線網路。從該行已在設備通過USB介面,連接問題 亞行TCPIP 5555 ADB連接192.168.0.101:5555 告訴亞行後台程序返回到監聽通過USB 也有在Android Market上的幾個應用程序能自動完成這些過程。 它works.You只需要訪問Android shell,然後輸入 另外一個(容易)解決方案是目前市場上:adbWireless,它會自動設置您的手機。 根是必須的!為...
5. 從adb --helpconnect <host>:<port> - connect to a device via TCP/IP
順便說那行選項。 你應該嘗試將手機連接到你的無線網路,然後得到它的IP從您的路由器,它不會工作,對 埠是5554
6. 您保存的adb路徑到您的Windows路徑 在Android激活調試模式 連接到PC 提示(有管理員右)類型:adb的TCPIP 5555 斷開平板電腦,或從電腦智能手機 提示符下鍵入:ADB連接IPADDRESS(IP地址為您的平板電腦或智能手機的DHCP / IP地址,您可以通過無線網路找到->電流 現在,提示你應該看到類似的結果:連接到xxx.xxx.xxx.xxx:5555
7.adb tcpip 5555
奇怪,但是這只是工作,如果我有USB電纜連接,然後我就可以拔掉,並為它去與一切ADB。 而返回時,adb usb
只會工作連接。 沒關系,如果我發出setprop service.adb.tcp.port 5555
或setprop service.adb.tcp.port -1
然後停止和啟動adbd,我仍然需要電纜或這是行不通的。 所以,如果我的亞行不工作,我敢打賭,我將無法使亞行通過WiFi兩種。
8. 你可以ssh本地埠轉發。但它仍然涉及電纜。 您的USB連接(主機)與一個sshd運行。 在遠程(遊客)個人電腦開始能夠portforwarding /隧道的ssh客戶端端。 例如:砰砰-L 5037:本地主機:5037 這種結構給我的設備連接到虛擬機。 到是不夠穩定(在調試過程中) SSH隧道工程為自由和更可靠。
9. 我不知道如何連接的設備,而在所有的任何一個USB連接,但如果你能,也許在您連接它可以通過發出切換adbd到TCP模式adb tcpip <port>
從終端,從任何PC上通過連接到您的設備通過WiFi:adb connect <ip>:<port>
也許也有可能從該裝置上的終端切換到TCP模式。
10. 我覺得其他的答案就簡單得多了adbWireless: 只需在手機上安裝一個應用程序切換調試通過wifi,安裝一個Eclipse插件,你就大功告成了。
11. 要連接您的TCP埠 請確保您的系統和設備連接到網路 1。打開控制台的cmd.exe 2,型號ADB TCPIP 5555 3。至系統->選項-> USB調試unchek它TCPIP連接 4.type ADB連接192.168.1.2這是您的設備ip地址 5。連接到192.168.1.2 如果你錯誤:未找到設備 連接設備到系統然後按照 為紮根設備 對應setProp service.adb.tcp.port 5555 停止adbd 啟動adbd
12. 在我的系統是這樣的: 我在我的Linux shell中的Android設備,一個簡單的「使用ifconfig」沒有我的IP地址。我只好類型: 用ifconfig eth0 -或- 加上netcfg 讓我的IP地址。 (我知道是eth0的配置,我看到它在我的dmesg)然後我做了: 對應setProp service.adb.tcp.port-1 停止adbd 啟動adbd 然後在我的Win7盒(一個運行Eclipse 3.7.1)。我打開提示 \\ Android的SDK \\平台工具> 沒有以管理員身份運行。然後我做了一個 ADB連接12.345.678.90 我從來沒有把一個埠。如果我做了 亞行TCPIP 5555 它說,它無法找到該設備,然後沒有出現在我的「亞行的設備」列表中。即這只是工作,如果我不這樣做上面。 我可以做一個「亞殼」與我的Android設備。但我的Android設備不現在出現在我的運行->運行配置-> Target選項卡。在另一方面,如果我把目標選項卡設置為自動。後來,當我通過運行我的應用程序運行->運行它並運行我的Android設備上,即使我的Android設備甚至沒有列為我的目標之一。
13. 要使用TCP和USB模式之間切換只需你可以將它添加到/init.rc:on property:service.adb.tcp.port=*
restart adbd
on property:service.adb.tcp.enable=1
setprop service.adb.tcp.port 5555
on property:service.adb.tcp.enable=0
setprop service.adb.tcp.port -1
現在你財產service.adb.tcp.enable啟用或禁用偵聽埠5555。運行netstat以檢查它是否在聽。正如你可以看到它也會觸發,如果你想改變service.adb.tcp.port手動。
14. 使用adbwireless應用程序,使手機,亞行從Windows機器連接到它對話。在手機上的應用程序adbwireless告訴你如何連接到它,給人的IP地址和一切。 要少得多有趣的選擇是通過USB進行連接,告訴亞行通過TCPIP 5555手機TCPIP,然後斷開USB,ADB連接。這是更難通過這種方式,你必須找出手機的IP地址,你自己(adbwireless告訴你的IP),你必須通過USB進行連接,你必須運行adb的TCPIP(adbwireless需要的是照顧過)。 所以:在手機上安裝adbwireless。使用它。這是可能的,我這樣做經常在Linux和Windows上。
15. 我放在一起自動啟用和通過TCP連接adb,通過USB連接的設備的批處理文件。有了它,你不必把在IP手動。@echo off
setlocal
REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools
REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off
REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0
REM Enable TCP
adb -d wait-for-device tcpip %port%
REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i
REM Connect ADB to device
adb connect %IP%:%port%
goto end
:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end
:off
adb wait-for-device usb
Ⅲ Android Http連接和TCP連接的區別
Http是應用層協議,TCP是網路層協議,應用層在TCP/IP四層架構中位於TCP的上一層。
建立Http連接在實現時有以下兩種方式:
1、[java] view plain
DefaultHttpClient http = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
HttpResponse response =http.execute(method);
2、[java] view plain
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection)
url.openConnection();
connection.connect();
而TCP連接在實現時要藉助Socket(套接字 IP+埠號)
[java] view plain
Socket s = new Socket("localhost", 12345);
區別從這兩個連接的實現方式就可以看出來,HTTP連接需要指明資源的URL,發出請求的應用不知道伺服器的IP,雖然域名伺服器也是要把域名解析成IP地址,但不屬於應用所關心的范疇,是網路層應該完成的工作。所以Http連接屬於無狀態的短連接,若再請求其他數據,需要再重新建立連接。客戶端向伺服器發送請求後,伺服器才知道客戶端的存在。
TCP連接實現時需要指明IP地址和埠號,就可以跟目的主機通過三次握手建立聯系,該連接一直保持直到某一方提出取消連接,通過四次握手關閉連接。Socket支持TCP/UDP協議,如果使用TCP協議,那麼socket連接就是TCP連接。論文提到的應用場景是手機與雲端的伺服器建立聯系,因為要保持連接並指定連接的建立時間,所以在這種場景下使用TCP連接最合適。3G網路不支持端到端建立TCP連接,因為它是client-server模式,所以需要通過雲端伺服器的輔助來實現手機的端到端通信。
Ⅳ android實現聊天功能是怎麼做到的
1、使用網路技術:通過對TCP/IP協議的支持,搭建TCP/IP客戶端/服務端通信系統,由服務端負責接收發送消息,客戶端負責發送消息。
2、利用XMPP技術:XMPP(Extensible Messaging and Presence Protocol)是一種可擴展的即時消息和存在協議,XMPP可以實現多用戶實時聊天,也可以實現多種客戶端的消息交互功能。
3、 利用HTTP協議:HTTP協議是多用戶聊天室的主要技術手段,在HTTP協議支持的客戶端/伺服器結構模型中,客戶端發送消息到伺服器,伺服器再將消息轉發給客戶端,實現多用戶聊天室。
Ⅳ 如何在 Android 手機上實現抓包
千鋒扣丁學堂Android開發為您解答:
tcpmp是最快捷方便的抓包方式,還可以加深對網路協議的理解。android下可以通過如下方式抓包:
1 Android上啟動tcpmp
Android設備可以把tcpmp的可執行文件上傳到android設備上,然後通過mac遠程登錄android設備運行tcpmp,前提是這台android設備必須已經root過。步驟如下:
下載android版本的tcpmp為android系統編譯的tcpmp版本。
通過adb將tcpmp上傳到android設備
通過adb push將tcpmp文件上傳到特定的目錄,這里我們選擇/sdcard/data目錄。
在android設備上運行tcpmp
通過adb shell登陸設備,並執行tcpmp,最後一步執行./tcpmp即可。
2. 分析tcpmp輸出
經過上面的步驟成功運行tcpmp之後,接下來就可以分析輸出的網路包內容了,iOS設備和Android設備的輸出是一致的。我們先來解析下幾個基本的格式:
圖中紅色方框內的部分是一個ip包的詳細記錄,類似的紀錄還有好幾條。這里我們著重分析第一條的各部分欄位含義。
14:37:41.615018 很簡單,是該包接收到的時間。
17.143.164.37.5223 是發送方的ip地址及埠號(5223是埠號)。
10.29.44.140.58036 是我android的ip地址及埠號。
Flags [P.]
是tcp包header部分的第14個位元組的P位。這個位元組所包含的幾個flag很重要,後面我會單獨詳細講解。這里P位表示接受方需要馬上將包push到應用層。
seq 1:54
tcp包的seq號,1是起始值,54結束值。tcp之所以被認為是流,是因為tcp包所攜帶的每一個位元組都有標號(seq號)。1:54表明總共有54個位元組被接受,其中一個位元組是三次握手階段所使用,所以一共發送的長度是53位元組。
ack 101 tcp包的ack號,ack 101表明seq號為100的位元組已被確認收到,下一個期望接收的seq號從101開始。
win 255 win表示的是tcp包發送方,作為接受方還可以接受的位元組數。這里win
255表明ip為17.143.164.37的主機還可以接受255個位元組。
options [nop,nop,…] options[…]表示的是該tcp包的options區域,nop是no
opertion的縮寫,沒什麼實際用途,主要是用做padding,因為options區域按協議規定必須是4位元組的倍數。
options[… TS val 2381386761] ts
val這個值是tcp包的時間戳,不過這個時間戳和設備的系統時間沒啥關系,剛開始是隨機值,後面隨著系統時鍾自增長。這個時間戳主要用處是seq序列號越界從0重新開始後,可以確認包的順序。
options[… ecr 427050796] ts ecr這個值主要用來計算RTT。比如A發送一個tcp包給B,A會在包里帶上TS
val,B收到之後在ack包里再把這個值原樣返回,A收到B的ack包之後再根據本地時鍾就可以計算出RTT了。這個值只在ack包里有效,非ack包ecr的值就為0.
length 53 這個length是應用層傳過來的數據大小,不包括tcp的header。這個值和我們上面分析的seq 1:54是一致的。
以上就是一個基本的tcp包結構,大家可以按照上面的分析再把其他幾個包理解下。我們在做應用的時候面對的更多是http協議,但對一個http請求是怎麼通過tcp/ip分解成一個個的packet,然後怎麼在網路上穩定可靠的傳輸,要有個基本的印象。下面我們再看下tcpmp更多的功能,這些功能都是基於對tcp/ip協議的理解,遇到不理解的建議多google下相關的技術概念。
3. tcpmp知識拓展
再繼續深入tcpmp之前,先貼上一張tcp header格式圖,常看常新。
[https://github.com/music4kid/music4kid.github.io/blob/master/images/tcpheader.png?raw=true](https://github.com/music4kid/music4kid.github.io/blob/master/images/tcpheader.png?raw=true)"
width="1056">
3.1 TCP Flags(tcp header第十四個位元組)
我們再仔細看下上面提到的flags概念,flags位於tcp
header的第十四個位元組,包含8個比特位,也就是上圖的CWR到FIN。這8個比特位都有特定的功能用途,分別是:CWR,ECE,URG,ACK,PSH,RST,SYN,FIN。
CWR ,ECE 兩個flag是用來配合做congestion
control的,一般情況下和應用層關系不大。發送方的包ECE(ECN-Echo)為0的時候表示出現了congestion,接收方回的包里CWR(Congestion
Window Reced)為1表明收到congestion信息並做了處理。我們重點看其他六個flag。
URG
URG代表Urgent,表明包的優先順序高,需要優先傳送對方並處理。像我們平時使用terminal的時候經常ctrl+c來結束某個任務,這種命令產生的網路數據包就需要urgent。
ACK
也就是我們所熟悉的ack包,用來告訴對方上一個數據包已經成功收到。不過一般不會為了ack單獨發送一個包,都是在下一個要發送的packet里設置ack位,這屬於tcp的優化機制,參見delayed
ack。
PSH Push我們上面解釋過,接收方接收到P位的flag包需要馬上將包交給應用層處理,一般我們在http
request的最後一個包里都能看到P位被設置。
RST Reset位,表明packet的發送方馬上就要斷開當前連接了。在http請求結束的時候一般可以看到一個數據包設置了RST位。
SYN
SYN位在發送建立連接請求的時候會設置,我們所熟悉的tcp三次握手就是syn和ack位的配合:syn->syn+ack->ack。
FIN
Finish位設置了就表示發送方沒有更多的數據要發送了,之後就要單向關閉連接了,接收方一般會回一個ack包。接收方再同理發送一個FIN就可以雙向關閉連接了。
這8個flag首字母分別是:C E U A P R S F。初看難以記憶,我腦洞了下,把它們組合成 supr
cafe,當然少了super少了個e,我可以將就下。我們在使用tcpmp的時候會經常看到這幾個flag,[S],[P],[R],[F],[.]。其他幾個都好理解,[.]特殊點,是個佔位符,沒有其他flag被設置的時候就顯示這個佔位符,一般表示ack。
3.2 tcpmp 更多使用參數
這部分我們來看下tcpmp常用的一些命令參數。文章最開始部分的tcpmp命令是這樣的:sudo tcpmp -i rvi0 -AAl。
-i rvi0 -AAl都是屬於參數部分。常見的有這些:
-i, 要監聽的網卡名稱,-i rvi0監聽虛擬網卡。不設置的時候默認監聽所有網卡流量。
-A, 用ASCII碼展示所截取的流量,一般用於網頁或者app里http請求。-AA可以獲取更多的信息。
-X,用ASCII碼和hex來展示包的內容,和上面的-A比較像。-XX可以展示更多的信息(比如link layer的header)。
-n,不解析hostname,tcpmp會優先暫時主機的名字。-nn則不展示主機名和埠名(比如443埠會被展示成https)。
-s,截取的包位元組長度,默認情況下tcpmp會展示96位元組的長度,要獲取完整的長度可以用-s0或者-s1600。
-c,只截取指定數目的包,然後退出。
-v,展示更多的有用信息,還可以用-vv -vvv增加信息的展示量。
src,指明ip包的發送方地址。
dst,指明ip包的接收方地址。
port,指明tcp包發送方或者接收方的埠號。
and,or,not,操作法,字面意思。
上面幾個是我個人比較常用的,更多的參數可以參考這個詳細文檔。有興趣的可以分析下面幾個例子練習下:
tcpmp 『tcp[13] & 16!=0』
tcpmp src port 80 and tcp
tcpmp -vv src and not dst port 23
tcpmp -nnvvS src 192.0.1.100 and dst port 443
4. 用tcpmp分析http完整請求
說了這么多,我們再來實戰下,看一個完整的http請求流程。sudo tcpmp -i rvi0 -AAl src 60.28.215.123 or
dst 60.28.215.123
列出了6個前面的packet,10.29.44.240是我android的ip地址,60.28.215.123是知乎server的ip地址,紅色方框內是android發出的packet,白色方框內是server發出的packet。packet1是android三次握手的第一個syn包,packet2是server
ack+syn的包,packet3是android ack的包。這3個packet之後tcp的三次握手就完成了。
packet4是android發出的http
request。長度只有240個位元組,所以一個packet就發過去了,當然還設置了flags的P位,request需要馬上被應用層處理。包裡面出現了spdy,點贊。
packet5是server ack剛收到的包,長度位0,所以這僅僅是一個ack包。
packet6是server返回http的response了,1388個位元組。packet5和packet6都ack了seq為241的包,當然是為了增加ack的成功率。
中間還有好幾個packet就不仔細分析了,最後再看下請求完成的最後幾個包:
最後兩個packet比較簡單,android發送個FIN+ACK的包就斷開連接了,server直接發送了一個RST包後也斷開連接了。
Ⅵ android中的tcp udp需要許可權嗎
android中的tcp和udp不需要任何許可權。因為它們都是網路通訊協議的一種,只要手機沒有問題,能夠上網,就可以使用TCP和UDP協議了。
TCP/IP是用於電腦通信的一組協議,我們通常稱之為TCP/IP協議族,它是七十年代中期美國國防部為其ARPANET廣域網開發的網路體系結構和協議標准,以它為基礎組建的Internet是目前國際上規模最大的電腦網路,正因為Internet的廣泛使用,使得TCP/IP成了事實上的標准。之所以說TCP/IP是一個協議族,是因為TCP/IP協議包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等許多協議,這些協議統稱為TCP/IP協議。
TCP/IP協議的名字實際上是來自最重要的兩個協議,TCP(傳輸控制協議)和IP(網際協議)。它負責把需要傳輸的信息分割成許多小包,也叫做信息包,然後把這些信息包發往目的地,它能有效地保證傳輸的安全性和正確性。
在Internet內部,信息不是以一個恆定的流從主機傳送到主機,而是把數據分解成小包,即數據包進行傳送。例如你傳送一封很長的信件給你的朋友,TCP就可以把這些信息分成很多個數據包,每個數據包用一個序號和一個接收地址來標定。此外,TCP還插入一些糾錯信息。
接著數據包被傳過網路,這就是IP的工作,即把它們傳送給遠程主機。在另一端,TCP接收到數據包並核查錯誤。如果有錯誤發生,TCP可以要求重發這個特定的數據包。只要所有的數據包都被正確地接收到,TCP將用序號來重新構造原始信息。換句話說,IP的工作是把原始數據從一地傳送到另一地,TCP的工作是管理這種流動並確保其數據是正確的。ß把數據分解成數據包有很多好處。首先,它允許Internet讓很多不同的用戶在同一時刻使用同一通訊線路。因為這些數據包不必一起輸送,所以通訊線路可以載著所有類型的數據包按它們自己的路徑從一地到另一地。就如一條高速公路上各個汽車都在公路上行駛。ß用數據包傳輸的另一個好處是:當某處出錯,只需重新傳送單個數據包,而不是整個信息,這樣會大大加快Internet的傳輸總速度。
TCP/IP是把電腦和通訊設備組織成網路的協議大家庭,兩個最重要的協議是TCP和IP。IP從一地到另一地傳輸數據,而TCP則保證它們都正確地工作。
目前,遍布世界范圍的Internet網路主要採用的就是TCP/IP協議,而且,國內大多數網路建設現在已朝著TCP/IP協議的方向發展。