導航:首頁 > 編程語言 > androidtcp編程

androidtcp編程

發布時間:2023-07-31 09:43:19

㈠ 安卓串口轉tcp

安卓串口轉tcp是將設備串口數據傳到網路伺服器中,除了用DTU之外,還可以使用「MX虛擬串口」工具軟體,安裝在電腦或控制器中,簡單兩步配置即可實現。
1、下載安裝「MX虛擬串口」到官網下載www.meixuannet.cn。
2、創建「串口TCP客戶端」,實現串口轉tcp網路,寫入串口的數據會發給遠程tcp伺服器,方便實現遠程串口應用。

㈡ 求一個android studio 的 tcpip 客戶端收發的實例,希望大俠們能給一下源碼工程

java">
最基礎的寫法


server端
publicclassMyTcpServer{
publicstaticvoidmian(String[]args){
try{
//構造一個伺服器端埠為12345的socket伺服器;
ServerSocketserverSocket=newServerSocket(12345);
//等待接收一個socket客戶端的連接,並得到客戶端的socket對象。
//此方法在沒有客戶端連接的時候,會阻塞。
Socketclient=serverSocket.accept();
//獲得socket客戶端的輸入管道
InputStreamis=client.getInputStream();
//獲得socket客戶端的輸出管道
OutputStreamos=client.getOutputStream();
byte[]buffer=newbyte[1024];
intlen=is.read(buffer);
System.out.println("-->"+newString(buffer));

os.write("Helloclient".getBytes());
os.flush();
is.close();
os.close();
client.close();
serverSocket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}

}
client端
{
@Override
publicvoidrun(){
super.run();
try{
Socketclient=newSocket("192.168.3.173",12345);//IP為伺服器IP,埠號為伺服器埠號。
InputStreamin=client.getInputStream();
OutputStreamout=client.getOutputStream();

out.write("Helloserver".getBytes());//如果在伺服器端先進行讀操作。那麼客戶端就應先進行寫操作。
//這樣交替進行,不然將都阻塞在Read讀操作。
out.flush();

byte[]buffer=newbyte[1024];
intlen=in.read();
in.read(buffer);
System.out.println("--->"+newString(buffer));


}catch(IOExceptione){
e.printStackTrace();
}
}
}
}

㈢ android開發tcp客戶端循環接收信息,為什麼收不到呀

InputStream reader = socket.getInputStream()
byte[] bbuf = new byte[1000];
int count = reader.read(bbuf);
把讀取數據的方式改成這種試試,怕是你使用readline()方法的時候接收不到最後的「回車換行符」導致的。

㈣ Android網路請求知識(三)授權,TCP/IP,HTTPS建立過程

由身份或持有的令牌確認享有的許可權,登錄過程實質上的目的也是為了確認許可權。

Cookie是客戶端給伺服器用的,setCookie是伺服器給客戶端用的。cookie由伺服器處理,客戶端負責存儲

客戶端發送cookie:賬戶和密碼
服務端收到後確認登錄setCookie:sessionID=1,記下sessionID
客戶端收到sessionID後記錄,以後請求服務端帶上對比記錄下sessionID,說明已經登錄

會話管理:登錄狀態,購物車
個性化:用戶偏好,主題
Tracking:分析用戶行為

XXS:跨腳本攻擊,及使用JavaScript拿到瀏覽器的cookie之後,發送到自己的網站,以這種方式來盜用用戶Cookie。Server在發送Cookie時,敏感的Cookie加上HttpOnly,這樣Cookie只能用於http請求,不能被JavaScript調用
XSRF:跨站請求偽造。Referer 從哪個網站跳轉過來

兩種方式:Basic和Bearer

首先第三方網站向授權網站申請第三方授權合作,拿到授權方頒發的client_id和client_secret(一般都是appid+appkey的方式)。

在這就過程中申請的client_secret是伺服器持有的,安全起見不能給客戶端,用服務端去和授權方獲取用戶信息,再傳給客戶端,包括④,⑤的請求過程也是需要加密的。這才是標準的授權過程。
有了access_token之後,就可以向授權方發送請求來獲取用戶信息

步驟分析就是上面的內容,這里把第4,6,8請求的參數分析一下
第④步參數:
response_type:指授權類型,必選,這里填固定值『code』
client_id:指客戶端id,必選,這里填在平台報備時獲取的appid
redirect_uri:指重定向URI,可選
scope:指申請的許可權范圍,可選
state:指客戶端當前狀態,可選,若填了,則認證伺服器會原樣返回該值

第⑥步參數:
grant_type:指使用哪種授權模式,必選,這里填固定值『authorization_code』
code:指從第⑤步獲取的code,必選
redirect_uri:指重定向URI,必選,這個值需要和第④步中的redirect_uri保持一致
client_id:指客戶端id,必選,這里填在平台報備時獲取的appid
client_secret:指客戶端密鑰,必選,這里填在平台報備時獲取的appkey

第⑧步參數:
access_token:指訪問令牌,必選,這里填第⑦步獲取的access_token
token_type:指令牌類型,必選,大小寫不敏感,bearer類型 / mac類型
expires_in:指過期時間,單位秒,當其他地方已設置過期時間,此處可省略該參數
refresh_token:指更新令牌,可選,用即將過期token換取新token
scope:指許可權范圍,可選,第④步中若已申請過某許可權,此處可省略該參數

我們在上面的第八步中會有refresh_token的參數,這個在實際操作中也比較常見

有時候我們在自己的項目中,將登陸和授權設計成類似OAuth2的過程,不過去掉Authorization code。登陸成功返回access_token,然後客戶端再請求時,帶上access_token。

我們常常會說到TCP/IP,那到底是什麼呢。這就需要講到網路分層模型。TCP在傳輸層,IP在網路層。那為什麼需要分層?因為網路不穩定,導致需要重傳的問題。為了提高傳輸效率我們就需要分塊,在傳輸層中就會進行分塊。TCP還有兩個重要的內容就是三次握手,四次分手。

HTTPS 協議是由 HTTP 加上TLS/SSL協議構建的可進行加密傳輸、身份認證的網路協議,主要通過數字證書、加密演算法、非對稱密鑰等技術完成互聯網數據傳輸加密,實現互聯網傳輸安全保護

1.客戶端通過發送Client Hello報文開始SSL通信。報文中包含客戶端支持的SSL的指定版本、加密組件列表(所使用的加密演算法及密鑰長度),客戶端隨機數,hash演算法。

2.伺服器可進行SSL通信時,會以Server Hello報文作為應答。和客戶端一樣,在報文中包含SSL版本以及加密組件,服務端隨機數。伺服器的加密組件內容是從接收到客戶端加密組件內篩選出來的。

3.之後伺服器發送Certificate報文。報文中包含公開密鑰證書。一般實際有三層證書嵌套,其實像下面圖二直接用根證書機構簽名也是可以的,但是一般根證書機構比較忙,需要類似中介的證書機構來幫助。

4.最後伺服器發送Server Hello Done報文通知客戶端,最初階段的SSL握手協商部分結束。

5.SSL第一次握手結束後,客戶端以Client Key Exchange報文作為回應。報文中包含通信加密中使用的一種被稱為Pre-master secret的隨機密碼串。該報文已用步驟3中的公開密鑰進行加密。

6.接著客戶端繼續發送Change Cipher Spec報文。該報文會提示伺服器,在此報文之後的通信會採用Pre-master secret密鑰加密。

7.客戶端發送Finished報文。該報文包含連接至今全部報文的整體校驗值。這次握手協商是否能夠成功,要以伺服器是否能夠正確解密報文作為判定標准。

8.伺服器同樣發送Change Cipher Spec報文。

9.伺服器同樣發送Finished報文。

10.伺服器和客戶端的Finished報文交換完畢之後,SSL連接就算建立完成。當然,通信會受到SSL的保護。從此處開始進行應用層協議的通信,即發送HTTP響應。

11.應用層協議通信,即發送HTTP響應。

12.最後由客戶端斷開連接。斷開連接時,發送close_notify報文。這步之後再發送TCP FIN報文來關閉與TCP的通信。

利用客戶端隨機數,服務端隨機數,per-master secret隨機數生成master secret,再生成客戶端加密密鑰,服務端加密密鑰,客戶端MAC secert,服務端MAC secert。MAC secert用於做報文摘要,這樣能夠查知報文是否遭到篡改,從而保護報文的完整性。

Android網路請求知識(一)HTTP基礎概念
Android網路請求知識(二)對稱和非對稱加密、數字簽名,Hash,Base64編碼
Android網路請求知識(三)授權,TCP/IP,HTTPS建立過程

㈤ Tcp,android客戶端服務端斷開重連應該怎麼個實現

我正好也在做這方面的東西,我們可以交流一下,我這邊需要做的是TCP客戶端和TCP伺服器,無這邊伺服器搭建目前運行狀況良好,但是客戶端始終不行,請問你有沒有客戶端的相關常式,我這邊的常式也可以分享給你的說,大家相互借鑒,共同進步。

周末加了一天班,終於把問題解決了,總結一個血的教訓給你,就是:你在調試單片機客戶端的時候,作為伺服器的電腦防火牆一定要關掉啊,我就是因為這樣,白忙了兩天。

你要實現客戶端斷開不影響HTTP伺服器的運行,就需要建立兩個不同的TCP_SERVER_pcb和TCP_CLI ENT_pcb結構體,分別用於客戶端和伺服器的TCP/IP協議棧控制。並且需要兩個不同的發送和接收緩存,不然是不行的。

㈥ 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 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模式,所以需要通過雲端伺服器的輔助來實現手機的端到端通信。

㈧ C# 和Android的 TCP(UDP)通信

伺服器程序
它僅僅建立ServerSocket監聽,並使用Socket獲取輸入輸出流。
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleServer {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

//創建一個ServerSocket,用於監聽客戶端socket的連接請求
ServerSocket ss=new ServerSocket(30000);
//採用循環不斷接受來自客戶端的請求,伺服器端也對應產生一個Socket
while(true){
Socket s=ss.accept();
OutputStream os=s.getOutputStream();
os.write("您好,您收到了伺服器的新年祝福!n".getBytes("utf-8"));
os.close();
s.close();
}

}}

客戶端程序
package my.learn.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

public class SimpleClient extends Activity {
private EditText show;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (EditText) findViewById(R.id.show);

try {

Socket socket = new Socket("自己計算機的IP地址", 30000);
//設置10秒之後即認為是超時
socket.setSoTimeout(10000);
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String line = br.readLine();

show.setText("來自伺服器的數據:"+line);

br.close();
socket.close();

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
Log.e("UnknownHost", "來自伺服器的數據");
e.printStackTrace();
} catch (IOException e) {
Log.e("IOException", "來自伺服器的數據");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

閱讀全文

與androidtcp編程相關的資料

熱點內容
解壓縮軟體免安裝版 瀏覽:962
安卓簡訊如何存檔 瀏覽:143
汽車導航不讀文件夾 瀏覽:107
全球雲伺服器如何注冊 瀏覽:884
udp直播流如何在伺服器里播放器 瀏覽:591
macbrew安裝php 瀏覽:425
點特徵提取演算法 瀏覽:502
python彈窗顯示輸入的文字 瀏覽:751
python數字和中文互轉 瀏覽:639
汽車空調壓縮機外殼 瀏覽:458
大型伺服器都是採用什麼模式 瀏覽:5
伺服器為什麼跳閘 瀏覽:398
怎麼用python分析基金收益 瀏覽:990
couple演算法 瀏覽:791
android調用文件管理器 瀏覽:152
中國我的世界最大的小游戲伺服器地址 瀏覽:833
程序員爆破粒子 瀏覽:889
我的世界pcl啟動器怎麼加入伺服器 瀏覽:253
傳奇源碼擴充人物結構 瀏覽:844
購買多個文件夾 瀏覽:774