我是靠谱客的博主 落寞哑铃,最近开发中收集的这篇文章主要介绍安卓app与阿里云服务器的无线通信(非局域网)写在阿里云里面的服务器代码:安卓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("connectn");
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() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
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 block
e.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() {
@Override
public void onClick(View arg0) {
new NetUtils("A").sendMessage();
}
});
效果
当我们的安卓手机连接任意的网络,点击按钮后,都能将按键对应的指令发送到云服务器上:
最后
以上就是落寞哑铃为你收集整理的安卓app与阿里云服务器的无线通信(非局域网)写在阿里云里面的服务器代码:安卓app中发送指令代码:效果的全部内容,希望文章能够帮你解决安卓app与阿里云服务器的无线通信(非局域网)写在阿里云里面的服务器代码:安卓app中发送指令代码:效果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复