1. 程式人生 > >c編寫,交叉編譯成android下二進位制可執行檔案

c編寫,交叉編譯成android下二進位制可執行檔案

題目:

請編寫一個netbd.c,實現

檢查android手機/system/app/cmd.apk檔案是否存在。

然後交叉編譯這個檔案,生成android下二進位制可執行檔案.

答:

======

題目:

答:  待實現.誰會?

======

題目:

請編寫 linuxhttp.c,實現 傳送http請求,獲取返回的json資料.

答:

linuxhttp.c 內容如下

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <time.h>
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
//#define IPSTR "61.147.124.120"
#define IPSTR "221.122.111.159"
#define PORT 8080
#define BUFSIZE 1024
 
int main(int argc, char **argv)
{
        int sockfd, ret, i, h;
        struct sockaddr_in servaddr;
        char str1[4096], str2[4096], buf[BUFSIZE], *str;
        socklen_t len;
        fd_set   t_set1;
        struct timeval  tv;
 
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
                printf("建立網路連線失敗,本執行緒即將終止---socket error!\n");
                exit(0);
        };
 
        bzero(&servaddr, sizeof(servaddr));
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(PORT);
        if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){
                printf("建立網路連線失敗,本執行緒即將終止--inet_pton error!\n");
                exit(0);
        };
 
        if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){
                printf("連線到伺服器失敗,connect error!\n");
                exit(0);
        }
        printf("與遠端建立了連線\n");
 
        //傳送資料
        memset(str2, 0, 4096);
        //strcat(str2, "qqCode=474497857");
		strcat(str2, "configVersion=&channelId=6666&imei=352110058815029&imsi=460003902197547&mid=cfqid9e51ce041e849c66&token=b6ce429de57cf6f4993ce23f263a7992&phoneModel=GT-I9100G&packageName=com.google.cfq.service&verName=1.0&version=1&cellId=4430&lac=10173&network=wifi&netType=2&sysVersion=2.3.6&sysSdkInt=10&simType=mobile&phoneNumber=13714236107&phoneSpace=1027547136/2113748992&SdCardSpace=6939049984/11809390592&installType=0");
        str=(char *)malloc(128);
        len = strlen(str2);
        sprintf(str, "%d", len);
 
        memset(str1, 0, 4096);
        strcat(str1, "POST /adweb/getConfig.jsp HTTP/1.1\n");
        strcat(str1, "Host: www.webxml.com.cn\n");
        strcat(str1, "Content-Type: application/x-www-form-urlencoded\n");
        strcat(str1, "Content-Length: ");
        strcat(str1, str);
        strcat(str1, "\n\n");
 
        strcat(str1, str2);
        strcat(str1, "\r\n\r\n");
        printf("%s\n",str1);
 
        ret = write(sockfd,str1,strlen(str1));
        if (ret < 0) {
                printf("傳送失敗!錯誤程式碼是%d,錯誤資訊是'%s'\n",errno, strerror(errno));
                exit(0);
        }else{
                printf("訊息傳送成功,共傳送了%d個位元組!\n\n", ret);
        }
 
        FD_ZERO(&t_set1);
        FD_SET(sockfd, &t_set1);
 
        while(1){
                sleep(2);
                tv.tv_sec= 0;
                tv.tv_usec= 0;
                h= 0;
                printf("--------------->1");
                h= select(sockfd +1, &t_set1, NULL, NULL, &tv);
                printf("--------------->2");
 
                //if (h == 0) continue;
                if (h < 0) {
                        close(sockfd);
                        printf("在讀取資料報文時SELECT檢測到異常,該異常導致執行緒終止!\n");
                        return -1;
                };
 
                if (h > 0){
                        memset(buf, 0, 4096);
                        i= read(sockfd, buf, 4095);
                        if (i==0){
                                close(sockfd);
                                printf("讀取資料報文時發現遠端關閉,該執行緒終止!\n");
                                return -1;
                        }
 
                        printf("%s\n", buf);
                }
        }
        close(sockfd);
 
 
        return 0;
}

======

相關推薦

c編寫交叉編譯android二進位制執行檔案

題目: 請編寫一個netbd.c,實現 檢查android手機/system/app/cmd.apk檔案是否存在。 然後交叉編譯這個檔案,生成android下二進位制可執行檔案. 答: ====== 題目: 答:  待實現.誰會? ====== 題目: 請編寫 linu

軟體素材---linux C語言:linux獲取執行檔案的絕對路徑--getcwd函式

      //標頭檔案:#include <unistd.h>     //定義函式:char * getcwd(char * buf, size_t size);    

'假定以下程式經編譯和連線後生成執行檔案PROG.EXE,如果在此執行檔案所在目錄的DOS提示符鍵入:PROG ABCDEFGH IJKL<回車>,則輸出結果為( ). void main( int argc, char *argv[]) { while(--argc>

main(int argc,char *argv[])函式的兩個形參,第一個int argc,是記錄你輸入在命令列(你題目中說的操作就是命令列輸入)上的字串個數;第二個*argv[]是個指標陣列,存放輸入在命令列上的命令(字串)。當命令列輸入PROG ABCDEFGH IJKL時,記錄了3

[android]寫一個system/bin 執行檔案

以hello 為例,檔案如下:./hello/Android.mk./hello/hello.cpp./hello/MODULE_LICENSE_APACHE2./hello/NOTICEAndroid.mk 的內容:# Copyright 2018 The Android

Linux檢視執行檔案、動態庫的ELF頭等資訊

      用法: readelf <option(s)> elf-file(s)       作用: 和Windows下的PE檔案類似,ELF檔案是linux系統下可執行檔案、動態庫檔案、靜態庫檔案的標準格式。有時候我們需要檢視ELF檔案的頭資訊,或者動態庫檔

如何在Linux系統查詢執行檔案

可執行檔案是指可移植可執行的檔案,用於程式的執行,那麼Linux下要如何查詢可執行檔案呢? linux下查詢可執行檔案   ls -F|grep “*”   這樣就可以了! 如果要遞迴查詢,可以這樣: ls -FR|grep "*" 我們來看看ls -F的作用:

如何編譯fabric和fabric-ca原始碼生成二進位制執行檔案

00 導言       在上上講《Fabric 環境搭建時bootstrap.sh幫我們做了什麼?》中,我們知道bootstrap.sh幫我們做了三件事:       1. 從github上克隆 hyperledger/fabric-samples並進入該目

【PE】Windows平臺執行檔案或動態庫dll新增版本資訊

###Date: 2017/9/22 ###Author : SoaringLee   平常我們可以看到在Windows可執行檔案中,右鍵屬性中含有檔案版本,檔名稱和版本等資訊,本文講述怎麼新增這些

cmake編譯靜態庫/動態庫/執行檔案及測試demo

0.編譯 # cd build # cmake .. # make -j4 //test.c測試demo #include <stdio.h>  int main(){   HelloFu

在linux中把彙編或c程式交叉編譯二進位制檔案燒錄開發板過程詳解

嵌入式開發中在宿主機中要編譯能在目標機中執行的程式檔案需要用到一種工具:交叉工具鏈。其中我們常用的交叉工具有以下幾種:交叉編譯器,交叉聯結器,交叉轉換器,交叉ELF檔案工具,交叉反彙編器。以下通過例項將這些做一些介紹。 分解以下講一個led.S檔案編譯成可燒錄的二進位制檔案

nodejs連線Access資料庫出現Error: Spawn C:\WINDOWS\SysWOW64\cscript.exe error Java專案生成執行jar包、exe檔案以及在Windows的安裝檔案

因為集成了第三方的資料庫,所以需要獲取資料庫的資料 使用 var connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+config.id_path+';');  

Linux交叉編譯Android-NDK-r5)

最近一段時間在做Kobo專案,主要是Android-ndk-r5的交叉編譯,有一個已經寫好了的程式庫,但是呢,是用vc寫的,而Android裡面的Java是不能直接呼叫VC寫的程式碼,所以我們需要將vc寫的程式庫交叉編譯成Java能呼叫的.so動態連結庫。 首先,是使用ubu

cocos2d-x 編譯android apk常見錯誤

1編譯CCCommon.cpp 提示資訊: [armeabi] Compile++ thumb: cocos2dx_static <= CCCommon.cpp D:/cocos2D/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/s

歷經萬難終於搞定Android的使用FFMPEG成功對H.264視訊流解碼

[email protected] 1 WINCE AD/PWM驅動 2 HID 多點觸控驅動 3 ANDROID SIP電話 4 ANDROID SPEEX語音編解碼、迴音消除 歡迎專案合作~

給我一個maven結構的war包編譯專案併成功執行起來

開發工具eclipse,idea,反編譯工具jq-gui 1.用eclipse建立一個maven結構的web專案 將第一項勾選,跳過選擇maven結構型別,下一步的jar包型別一定要選擇war包型別,其他自定義, 標準的maven結

android JNI執行NDK編譯執行檔案

1.android環境的可執行檔案的生成 所謂的android下的可執行檔案,其實就是一般的c/c++程式碼使用NDK編譯出來的應用程式。它和linux下用gcc編譯出來的程式和windows系統下的.exe檔案是一樣的。要將程式碼編譯成可執行檔案只需要將編譯so的inc

Linux中將c檔案編譯執行檔案的方法

c檔案:project.c 方法一 //預編譯,生成已編譯通過的C原始程式 *.i  gcc -E project.c -o project.i //編譯,生成組合語言原始程式 *.s  gcc -S project.i -o project.s //連結,生成可執行程

android執行檔案交叉編譯執行

簡介 android一般使用java進行開發,但是有時候我們可能需要使用到native語言,使用C/C++進行編譯執行. 現在我們可以搜到很多使用android-studio和NDK進行編譯so執行的方式,我就不再贅述了,我們這裡主要講如何利用已經有的NDK工

交叉編譯環境學習(編譯Android上的執行程式)

        前幾天幫忙師兄發現的Android上的一個驅動程式漏洞,奈何技術不夠耐心不足,沒有找到漏洞的根源。由於程式要由c程式來觸發,而c程式是在pc上的開發的,要在Android裝置上執行,這

老專案使用的jdk1.7編寫在jdk1.8環境如何將老專案跑起來

經過多方面排查,發現問題所在,編譯jdk版本和執行環境版本不一致會導致衝突 解決方案: 第一步:在eclipse中配置jdk1.7版本window->preference->java->installed JREs新增jdk路徑到eclipse中 第二