日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓app与阿里云服务器的无线通信(非局域网)

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓app与阿里云服务器的无线通信(非局域网) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:安卓app與阿里云服務器的無線通信(非局域網)
作者:圖觸靚
發布時間: 2020-08-01 16:13:14
網址:https://blog.csdn.net/bhbhhyg/article/details/107732156

目錄

  • 寫在阿里云里面的服務器代碼:
  • 安卓app中發送指令代碼:
  • 效果

寫在阿里云里面的服務器代碼:

#include <sys/types.h> #include <sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include <unistd.h> #include<string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int initsocket(){int s_fd=socket(AF_INET, SOCK_STREAM,0);if (s_fd==-1){perror("socket");exit(-1);}struct sockaddr_in addr;memset(&addr,0,sizeof(struct sockaddr_in));addr.sin_family=AF_INET;addr.sin_port=htons(3389); //端口號,注意要先在網絡與安全->安全組中先添加一個端口inet_aton("172.23.250.6",&addr.sin_addr);//IP地址,該ip地址要填內網地址!!// addr.sin_port=htons(atoi(argv[2]));// inet_aton(argv[1],&addr.sin_addr);int bid=bind(s_fd,(struct sockaddr *)&addr,sizeof(struct sockaddr_in));listen(s_fd,10);int len=sizeof(struct sockaddr_in);return s_fd; } int main(){char readbuf[2]={0};int s_fd=initsocket(); //初始化服務器printf("wait connect.....\n");while(1){int fd_a=accept(s_fd,NULL,NULL); //該函數用來接受連接,沒有連接的時候也可以用來阻塞while(1)printf("connect\n");memset(readbuf,0,2); //初始化字符串int r=read(fd_a,readbuf,2); //讀指令if(r==-1){perror("read");}else{printf(" cmd is %c \n",readbuf[0]);//打印安卓客戶端發來的指令} }return 0; }

注意!!!:以上ip地址需要填內網的ip,服務器內網ip可以通過ifconfig命令來查看。端口號要先在網絡與安全->安全組中先添加

安卓app中發送指令代碼:

public void sendMessage() {new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtry {Socket client = new Socket("47.115.9.106",3389);//注意ip要填你阿里云服務器的外網ip,端口號要在網絡與安全->安全組中先添加端口,在到云電腦內把該端口拉入白名單OutputStream out = client.getOutputStream();out.write(message.getBytes());out.close();client.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}).start();}

拉入防火墻白名單

這里的指令有三個

firewall-cmd --list-all 列出所有端口號白名單
firewall-cmd --add-port=8888/tcp --permanent 添加一個8888端口為白名單
firewall-cmd --reload 更新防火墻操作

安卓對應按鍵的寫法:(Netuils為一個類,我的發送指令的sendMessage方法是寫在類里面的)

Button kd=(Button)findViewById(R.id.kd); kd.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {new NetUtils("A").sendMessage();}});

效果

當我們的安卓手機連接任意的網絡,點擊按鈕后,都能將按鍵對應的指令發送到云服務器上:

總結

以上是生活随笔為你收集整理的安卓app与阿里云服务器的无线通信(非局域网)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。