登录云主机的方法
1 打开mac 终端
ssh root@42.123.81.215
密码是:*******
进入之后 cd /var/www/html/api/
可以看到data, jindu ,kaidu,等文件夹
这些文件里面都有3个文件
data.txt
get.php
post.php
1 <?php
2 $file = fopen("data.txt","r”);
3 $data = file_get_contents("data.txt”);
4 $data1="+".$data;
5 echo $data1;
6 ?>
7
post.php
<?php
2 $file=fopen("data.txt","w”);
3 $data=$_GET['data’];
4 if(fwrite($file,$data)){
5 echo "ok”;
6 } else {
7 echo "faile”;
8 }
9 ?>
data.txt
123
留给外界的接口是:
取数据
http://42.123.81.215:81/api/data/get.php
存数据
http://42.123.81.215:81/api/data/post.php?data=123
其中存取数据都是对data.txt里面的字符串进行操作
所以每一个数据源对应的是一个文件夹
比如 经度 就存放在jindu这个文件夹
纬度 就存放在weidu这个文件夹
这样一个简单的web服务端就搭建成功了。你可以在线通过 浏览器调试。我们用手机和浏览器都进行过测试
都没有问题
但是用单片机连接出现了问题
推测原因是单片机 不能像手机和浏览器处理get 请求那样强大的功能。
所以单片机连接后每发送一次数据就耗时特别严重。导致不能实时修改数据和更新数据
下面连个是网上找的TCP服务端和客户端代码
服务端
server.c
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char **argv)
{
int listenfd;
int connfd;
struct sockaddr_in servaddr;
listenfd = socket(PF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(50001);
bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
listen(listenfd, 10);
connfd = accept(listenfd, (struct sockaddr *)NULL, NULL);
int n;
char recvline[1024];
while((n=read(connfd, recvline, 1024)) > 0)
{
recvline[n] = 0;
printf("%s\n", recvline);
}
close(connfd);
close(listenfd);
return 1;
}
客户端
client.c
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr;
sockfd = socket(PF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(50001);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
char sendline[100];
sprintf(sendline, "Hello, world!");
write(sockfd, sendline, strlen(sendline));
close(sockfd);
return 1;
}