軟體和伺服器怎麼通信
1. android平台的app 手機客戶端和後台伺服器怎麼進行數據交互的
首先不要管安卓端還是蘋果端,現在一般都是響應式的app,你放到安卓或者蘋果或者pc或者平板都是沒有問題的。一般採用的是http介面通訊,或者socket連接。具體你要去查資料找Demo了。而且現在主流是採用html5開發或者混合開發了。所以最好是伺服器提供appAPI介面,通過http訪問伺服器,獲取數據,數據一般是json,或者xml,拿到後解析數據就可以了,然後再用UI框架或者其他框架或者自定義的UI封裝下格式很漂亮了,至於cookie和session等,看你的習慣,網路驗證和簽名那些也自己看習慣,如果涉及到大數據,還需要引入第三方框架的,直接引入就可以了,不過推薦自己寫,防止侵權。都是很通用的。
2. 手機上的軟體怎樣和互聯網上的伺服器通信
如果你手機上帶有無線局域模塊就能上內網
那樣就可以使用TCP\IP協議
3. 怎麼把pc端的軟體作為伺服器與android客戶端通信
Android使用的僅僅使用了PC 里邊的一個埠 IP自然就是127.0.0.1了,或者是localhost吧 關於5037口和5555口,找到了一個看起來合理的解釋: adb(Android Debug Bridge)包括三個部分: 1)adb client, 運行在PC上(為DDMS,即IDE工作) 2)adb daemon(守護進程), 運行於Emulator(為與Emulator中的VM交互工作); 3)adb server(服務進程), 運行在PC(任務管理器上有),管理著adb client和adb daemon的通信.server與client通信的埠是是5037, adb server會與emulator交互的,使用的埠有兩個,一個是5554專門用於與Emulator實例的連接,那麼數據可以從Emulator轉發給IDE控制台了,另一個則是5555,專門與adb daemon連接為後面調試使用。
4. 如何使用socket進行客戶端和伺服器端的通信
下載完成後,軟體是一個單獨的運行程序,可以直接打開軟體。
3
軟體的界面很簡單,在左側有tcp和udp的客戶端或服務端的快捷按鈕,上方有【創建】【刪除】【退出】等選項按鈕。
4
我們先來建立TCP的測試服務端。點擊【TCP Server】再點擊【創建】。
選擇一個監聽埠,這里我們使用6001作為服務端的監聽埠。
建立完成後,服務端會自動啟動,軟體會顯示【啟動監聽】的狀態。
我們可以檢測一下本機的6001埠是否已經打開。在DOS窗口中輸入命令【netstat -a】,可以在列表中看到本機的6001埠的狀態為listening的狀態,表示本機的6001埠正處於監聽的狀態。
在DOS窗口中輸入命令【telnet 192.168.0.140 6001】來登錄本地的6001埠。
點擊回車鍵,就可以成功登錄6001埠。在測試軟體中就可以看到狀態是已連接的狀態,同時也可以看到對方的ip就是本地ip。
再來測試通信情況,在DOS窗口中輸入a、b、c,在軟體的接收窗口就可以看到收到的數據了。
在軟體的發送窗口中輸入1234567890,點擊發送後,在DOS窗口中就可以看到軟體發送過來的數據了。
測試完成後,在軟體中點擊【停止監聽】,同時在DOS窗口中可以看到【失去了跟主機的連接】,表示測試連接已經斷開。
再來創建TCP的客戶端,點擊【TCP Client】再點擊【創建】。會彈出【創建socket客戶端】窗口,輸入對方的ip和對方的埠,點擊確認。
tcp的客戶端已經建立好,如果對方的埠監聽正常的話,點擊【連接】就可以連接到對方的埠和對方進行測試通信了。
5. 客戶端程序和伺服器之間通信用的是什麼技術
客戶端程序和伺服器之間通信用這是網路傳輸層的問題,在傳輸層上主要就是兩種數據包,即為TCP(可靠連接)、UDP(不可靠連接),這個其實與你想要做的伺服器和程序設計沒有大的關系,不知道你要搭建什麼伺服器,是windows還是linux 伺服器,在windows下面一般是ASP.net +sql server (很多人現在也在windows下做apacha+php+mysql); 在linux下面是apacha+php+mysql;網站使用的是HTTP協議來實現網站的建設
6. 手機app開發怎樣與伺服器通信
app開發分客戶端和服務端開發,客戶端和服務端以json格式http協議通信,服務端是操作伺服器的,各種邏輯,數據處理等都是服務端的事,然後服務端再與客戶端通信的。
7. redis怎麼解決app與伺服器通信
簡介
幾乎所有的主流編程語言都有Redis的客戶端,不考慮Redis非常流行的原因,如果站在技術的角度看原因還有兩個:
客戶端與服務端之間的通信協議是在TCP 協議之上構建的。
Redis制定了 RESP(REdis Serialization Protocol,Redis序列化協議)實現客戶端與服務端的正常交互,這種協議簡單高效,既能夠被機器解析,又容易被人類識別。
- *<參數數量> CR LF
- $<參數 1 的位元組數量> CR LF
- <參數 1 的數據> CR LF
- ...
- $<參數 N 的位元組數量> CR LF
- <參數 N 的數據> CR LF
- SET key value
- *3
- $3
- SET
- $3 # 這里 key 一共三個位元組
- key
- $5 # 這里 value 一共五個位元組
- value
狀態回復(status reply)的第一個位元組是 "+"
錯誤回復(error reply)的第一個位元組是 "-"
整數回復(integer reply)的第一個位元組是 ":"
批量回復(bulk reply)的第一個位元組是 "$"
多條批量回復(multi bulk reply)的第一個位元組是 "*"
- static sds cliFormatReplyTTY(redisReply *r, char *prefix) {
- sds out = sdsempty();
- switch (r->type) {
- // 處理錯誤回復
- case REDIS_REPLY_ERROR:
- out = sdscatprintf(out,"(error) %s ", r->str);
- break;
- // 處理狀態回復
- case REDIS_REPLY_STATUS:
- out = sdscat(out,r->str);
- out = sdscat(out," ");
- break;
- // 處理整數回復
- case REDIS_REPLY_INTEGER:
- out = sdscatprintf(out,"(integer) %lld ",r->integer);
- break;
- // 處理字元串回復
- case REDIS_REPLY_STRING:
- /* If you are procing output for the standard output we want
- * a more interesting output with quoted characters and so forth */
- out = sdscatrepr(out,r->str,r->len);
- out = sdscat(out," ");
- break;
- // 處理 nil
- case REDIS_REPLY_NIL:
- out = sdscat(out,"(nil) ");
- break;
- // 處理多回復
- case REDIS_REPLY_ARRAY:
- if (r->elements == 0) {
- out = sdscat(out,"(empty list or set) ");
- } else {
- unsigned int i, idxlen = 0;
- char _prefixlen[16];
- char _prefixfmt[16];
- sds _prefix;
- sds tmp;
- /* Calculate chars needed to represent the largest index */
- i = r->elements;
- do {
- idxlen++;
- i /= 10;
- } while(i);
- /* Prefix for nested multi bulks should grow with idxlen+2 spaces */
- memset(_prefixlen,' ',idxlen+2);
- _prefixlen[idxlen+2] = '
客戶端和伺服器通過 TCP 連接來進行數據交互, 伺服器默認的埠號為 6379 。
客戶端和伺服器發送的命令或數據一律以 (CRLF)結尾。
發送命令
RESP 在 Redis 1.2 版本中引入, 並最終在 Redis 2.0 版本成為 Redis 伺服器通信的標准方式。
在這個協議中, 所有發送至 Redis 伺服器的參數都是二進制安全(binary safe)的。
RESP 的規定一條命令的格式如下:
命令本身也作為協議的其中一個參數來發送。
例如我們經常執行的 SET 命令,在命令行中我們輸入如下:
使用 RESP 協議規定的格式:
這個命令的實際協議值如下:
"*3 $3 SET $3 key $5 value "
回復
Redis 命令會返回多種不同類型的回復。
通過檢查伺服器發回數據的第一個位元組, 可以確定這個回復是什麼類型:
我們知道redis-cli只能看到最終的執行結果,那是因為redis-cli本身就按照RESP進行結果解析的,所以看不到中間結果,redis-cli.c 源碼對命令結果的解析結構如下: