求360能看电脑配置吗大神帮我看看我这配置能不能玩 LOL DNF CF 魔兽世界 永恒之塔

&主题:求高人推荐内置web服务器的家庭用网络摄像头
泡网分: 28.28
帖子: 1761
注册: 2003年05月
以前用过海康威视的网络枪机,自带web服务用着很爽,完全不依赖云服务,给对方一个ip地址和端口号,直接在浏览器上就能看。即便使用app,也是不依赖厂家线上服务的那种,比如海康威视的ivms4500。
但是家用、小体积、支持wifi的网络摄像机,都没有介绍是否有这样的功能。萤石的虽然有web服务,还是依赖云。
想请高人给介绍几款,谢谢!
作者相关热贴:
微信扫一扫分享
&版权所有:&&&&2015--智慧家庭(服务器) - 博客频道 - CSDN.NET
Github: lianghuiyong
lianghuiyong
分类:嵌入式
项目环境与工具:Ubuntu14.04(64位)、S5pv210、PAD、context-M0、Android Studio、JSON、MySQL(服务器)、sqlite3(客户端)。
主要开发语言:C、Java
项目描述:手持设备接入服务器,服务器连接控制台,控制台通过ZigBee连接M0,通过这种数据连接手持设备和M0进行信息采集系统交互。控制台还提供摄像头的HTTP流媒体服务。
责任描述:
1、服务器实现客户端注册登录操作。
2、手持客户端(手机安卓端)接入服务器实时获取硬件状态数据,
3、手持客户端发送要改变的硬件信息给服务器,服务器接收到手机发送过来的要改变的硬件消息再转送给控制台。
4、利用JNI/HAL技术实现底层与APP的交互。
#ifndef _HEAD_H
#define _HEAD_H
#include &stdio.h&
#include &stdlib.h&
#include &stdbool.h&
#include &string.h&
#include &strings.h&
#include &unistd.h&
#include &sys/types.h&
/* See NOTES */
#include &sys/socket.h&
#include &arpa/inet.h&
#include &netinet/in.h&
#include &net/if.h&
#include &mysql/mysql.h&
#include &signal.h&
#include &pthread.h&
#include &/usr/local/include/json/json.h&
#define SER_PORT 8888
#define SER_IP_ADDR "192.168.7.105"
MYSQL_SERVER
"localhost"
MYSQL_USER
MYSQL_PASSWD
IS_json_val(buf,string)
json_object_get_string(json_object_object_get(json_tokener_parse(buf),string))
extern void *phone_client(void *);
extern void *control_client(void *);
extern void start_mysql_init();
extern void server_socket_init(int *);
extern void sql_insert_user(const char *,const char*);
extern int
sql_select_reg(const char *);
extern int
sql_select_user(const char *,const char*);
extern void sql_insert_SHhardware(const char *,const char *,const char *,const char *,const char *,const char *,const char *,const char *,const char *);
extern char *get_time();
extern void sql_insert_client_fd(int );
extern void sql_remove_client_fd(int );
extern void save_to_control_hardware(char *);
extern void send_hardware_all_client(char *);
extern void send_client_reg_OK(int);
extern void send_client_reg_false(int);
extern void send_client_login_OK(int);
extern void send_client_login_false(int);
MYSQL *my_
int control_
int listen_fd, new_
volatile int control_
json_object*
/*************************************************************************
& File Name: server.c
& Author: 梁惠涌
& Created Time: 日 星期三 21时09分09秒
************************************************************************/
#include "head.h"
int main(){
char read_buf[BUFSIZ];
pthread_t tid1, tid2;
control_flag = false;
control_hardware = json_object_new_object();
control_hardware = NULL;
system("clear");
get_time();
printf( "Step 1:\n");
start_mysql_init();
server_socket_init(&listen_fd);
printf("-----------服务器启动!--------- \n");
new_fd = accept(listen_fd, NULL, NULL);
if(new_fd & 0){
perror("accept");
bzero(read_buf,BUFSIZ);
ret = read(new_fd, read_buf, BUFSIZ-1);
if(ret &0 ){
printf("%s\n",read_buf);
if(strcmp(IS_json_val(read_buf,"flag"), "phone") == 0){
printf("the phone is Connect!\n");
pthread_create(&tid1, NULL, phone_client, (void *)&new_fd);
}else if(strcmp(IS_json_val(read_buf,"flag"), "control") == 0){
if(control_flag == true){
perror("error:控制台已接入一台!\n");
control_flag = true;
printf( "Step 2:\nthe control is Connect!\n");
printf("-----------控制台接入--------- \n");
save_to_control_hardware(read_buf);
sql_insert_SHhardware(IS_json_val(read_buf,"flag"),get_time(),"root",IS_json_val(read_buf,"tmp"),IS_json_val(read_buf,"damp"),IS_json_val(read_buf,"fan"),IS_json_val(read_buf,"buz"),IS_json_val(read_buf,"led"),IS_json_val(read_buf,"camare"));
pthread_create(&tid2, NULL, control_client, (void *)&new_fd);
close(listen_fd);
/*************************************************************************
& File Name: thread.c
& Created Time: 2015年07月14日 星期五 10时33分51秒
************************************************************************/
void *control_client(void *arg){
pthread_detach(pthread_self());
char control_buf[BUFSIZ];
control_fd = *(int *)
ret = read(control_fd, control_buf, BUFSIZ-1);
if(ret &=0){
printf("连接控制台失败,等待重连...\n");
//让control_hardware始终存储最新的硬件信息
save_to_control_hardware(control_buf);
control_hardware = json_tokener_parse(control_buf);
sql_insert_SHhardware(IS_json_val(control_buf,"flag"),get_time(),
"root",IS_json_val(control_buf,"tmp"),
IS_json_val(control_buf,"damp"),
IS_json_val(control_buf,"fan"),
IS_json_val(control_buf,"buz"),
IS_json_val(control_buf,"led"),
IS_json_val(control_buf,"camare"));
//将硬件信息发送给所有的客户端
send_hardware_all_client(control_buf);
printf("Control Is Close!\n");
close(control_fd);
control_flag =
pthread_exit(0);
return NULL;
void *phone_client(void *arg){
pthread_detach(pthread_self());
int ret, client_fd, ok_login=false, ok_reg =
bool connected_flag =
char client_buf[BUFSIZ];
client_fd = *(int *)
printf("Connect phone_client[%d]!\n",client_fd);
sql_insert_client_fd(client_fd);
//login and register
while((!ok_login)||(!ok_reg)){
bzero(client_buf,BUFSIZ);
ret = read(client_fd, client_buf, BUFSIZ-1);
if(ret &= 0 ){
printf("time :%s\n",get_time());
sql_remove_client_fd(client_fd);
close(client_fd);
pthread_exit(0);
return NULL;
printf("phone_client : %s\n",client_buf);
if( IS_json_val(client_buf,"type") == NULL){
connected_flag =
if(strcmp(IS_json_val(client_buf,"type"), "login") == 0){
//对比数据库的用户表
if(sql_select_user(IS_json_val(client_buf,"username"),IS_json_val(client_buf,"password"))){
printf("==========================\n");
printf("phone_client[%d] : %s
login!\n", client_fd, IS_json_val(client_buf,"username"));
printf("==========================\n");
ok_login =
send_client_login_OK(client_fd);
send_client_login_false(client_fd);
}else if(strcmp(IS_json_val(client_buf,"type"),"reg") == 0){
printf("phone_client[%d] - register : %s - %s\n",
client_fd,
IS_json_val(client_buf,"username"),
IS_json_val(client_buf,"password"));
//判断数据库内的有没有该用户名
if(sql_select_reg(IS_json_val(client_buf,"username")) == true){
printf("phone_client[%d] : 已存在该用户名:%s\n",client_fd, IS_json_val(client_buf,"username"));
send_client_reg_false(client_fd);
//注册用户
sql_insert_user(IS_json_val(client_buf,"username"),IS_json_val(client_buf,"password"));
send_client_reg_OK(client_fd);
//客户端连接后将数据库内最新的数据发送给客户端
const char *send_buf = json_object_to_json_string(control_hardware);
write(client_fd, send_buf, strlen(send_buf));
printf("Server -& send to client[%d] :
%s\n",client_fd,send_buf);
bzero(client_buf,BUFSIZ);
ret = read(client_fd, client_buf, BUFSIZ-1);
if(ret & 0){
printf("phone client[%d] : read client error!\n", client_fd);
printf("phone_client[%d] : read from client : %s \n", client_fd, client_buf);
printf("phone_client[%d] Set[ %s : %s ]\n",client_fd,IS_json_val(client_buf,"set_type"),IS_json_val(client_buf,"set_val"));
if(control_flag == true){
write(control_fd, client_buf, strlen(client_buf));
printf("=== control is close! ===\n");
printf("phone_client[%d] : write to control:%s\n ",client_fd,client_buf);
printf("phone_client[%d] close!\n time :%s\n",client_fd, get_time());
sql_remove_client_fd(client_fd);
close(client_fd);
pthread_exit(0);
return NULL;
#include "head.h"
void start_mysql_init(){
my_con = mysql_init(NULL);
if(!mysql_real_connect(my_con,MYSQL_SERVER,MYSQL_USER,MYSQL_PASSWD,NULL,0,NULL,0)){
fprintf(stderr, "%s\n", mysql_error(my_con));
printf("mysql Connect!\n");
printf("mysql version :%s\n",mysql_get_client_info());
if(mysql_query(my_con, "create database if not exists smart_home")) {
printf("Error %u: %s\n", mysql_errno(my_con), mysql_error(my_con));
if(mysql_query(my_con, "use smart_home")) {
printf("Error %u: %s\n", mysql_errno(my_con), mysql_error(my_con));
if(mysql_query(my_con, "create table if not exists users(username VARCHAR(20),password VARCHAR(20))")) {
printf("Error %u: %s\n", mysql_errno(my_con), mysql_error(my_con));
if(mysql_query(my_con, "create table if not exists SH_hardware(SH_flag VARCHAR(20),SH_time VARCHAR(40), SH_name VARCHAR(20), SH_tmp VARCHAR(20), SH_damp VARCHAR(20), SH_fan VARCHAR(20), SH_buz VARCHAR(20), SH_led VARCHAR(20),SH_camare VARCHAR(20))")) {
printf("Error %u: %s\n", mysql_errno(my_con), mysql_error(my_con));
if(mysql_query(my_con, "create table if not exists client_fd(client_fd int(8))")) {
printf("Error %u: %s\n", mysql_errno(my_con), mysql_error(my_con));
void server_socket_init(int *listen_fd){
struct sockaddr_in sin;
*listen_fd = socket(AF_INET,SOCK_STREAM, 0);
if(listen_fd & 0){
perror("socket error!\n");
sin.sin_family = AF_INET, sin.sin_port = htons(SER_PORT);
sin.sin_addr.s_addr = inet_addr(SER_IP_ADDR);
bzero(sin.sin_zero, 8);
printf("server PORT:%d\n",SER_PORT);
printf("server IP
:%s\n",SER_IP_ADDR);
int bReuseaddr=1;
if(setsockopt(*listen_fd,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(bReuseaddr)) != 0)
fprintf(stderr,"setsockopt IP error!\n");
if(bind(*listen_fd, (struct sockaddr *)&sin,sizeof(sin))!=0){
perror("bind\n");
listen(*listen_fd, 5);
void sql_insert_user(const char *username,const char *password){
char sql_insert[200];
sprintf(sql_insert, "INSERT INTO users(username,password) values('%s','%s');", username, password);
int res = mysql_query(my_con, sql_insert);
if (!res) {
printf("MySQL : Inserted %lu user\n", (unsigned long)mysql_affected_rows(my_con));
fprintf(stderr, "Insert error %d: %s func : %s\n", mysql_errno(my_con), mysql_error(my_con),__func__);
void sql_insert_client_fd(int client_fd){
char sql_insert[200];
sprintf(sql_insert, "INSERT INTO client_fd(client_fd) values(%d);",client_fd);
int res = mysql_query(my_con, sql_insert);
fprintf(stderr, "Insert error %d: %s func: %s \n", mysql_errno(my_con), mysql_error(my_con),__func__);
printf("MySQL :
INSERT client_fd[%d]\n",client_fd);
void sql_remove_client_fd(int client_fd){
char sql_insert[200];
sprintf(sql_insert, "DELETE from client_fd WHERE client_fd=%d",client_fd);
int res = mysql_query(my_con, sql_insert);
if (res) {
fprintf(stderr, "Delete error %d: %s\n", mysql_errno(my_con), mysql_error(my_con));
printf("MySQL : DELETE client_fd[%d]\n",client_fd);
int sql_select_user(const char *username,const char *password){
int iTableR
MYSQL_RES *res_
res = mysql_query(my_con, "select username,password from users");
if (res) {
printf("SELECT error:%s\n",mysql_error(my_con));
res_ptr = mysql_store_result(my_con);
if(res_ptr) {
iTableRow = mysql_num_rows(res_ptr);
for(i=0; i&iTableR i++){
sqlrow = mysql_fetch_row(res_ptr);
if( (strcmp(username,sqlrow[0])==0 ) && (strcmp(password,sqlrow[1])==0)){
mysql_free_result(res_ptr);
mysql_free_result(res_ptr);
int sql_select_reg(const char *username){
int iTableR
MYSQL_RES *res_
res = mysql_query(my_con, "select username,password from users");
if (res) {
printf("SELECT error:%s\n",mysql_error(my_con));
res_ptr = mysql_store_result(my_con);
if(res_ptr) {
iTableRow = mysql_num_rows(res_ptr);
for(i=0; i&iTableR i++){
sqlrow = mysql_fetch_row(res_ptr);
if(strcmp(username,sqlrow[0]) == 0){
mysql_free_result(res_ptr);
mysql_free_result(res_ptr);
void sql_insert_SHhardware(const char *SH_flag,const char *SH_time,const char *SH_name,const char *SH_tmp,const char *SH_damp,const char *SH_fan,const char *SH_buz,const char *SH_led, const char *SH_camare){
char sql_insert[200];
sprintf(sql_insert, "INSERT INTO SH_hardware(SH_flag,SH_time,SH_name,SH_tmp,SH_damp,SH_fan,SH_buz,SH_led,SH_camare) values('%s','%s','%s',%s,'%s','%s','%s','%s','%s');", SH_flag, SH_time,SH_name,SH_tmp,SH_damp,SH_fan,SH_buz,SH_led,SH_camare);
int res = mysql_query(my_con, sql_insert);
if (res) {
fprintf(stderr, "Insert error %d: %s\n", mysql_errno(my_con), mysql_error(my_con));
char *get_time(){
struct tm *p;
static char tmm[30];
p = localtime(&t);
sprintf(tmm,"%d:%d:%d-%d:%d:%d",1900+p-&tm_year,1+p-&tm_mon, p-&tm_mday,p-&tm_hour,p-&tm_min,p-&tm_sec);
void save_to_control_hardware(char *control_buf){
control_hardware = json_tokener_parse(control_buf);
json_object_object_add(control_hardware, "flag", json_object_new_string("server"));
printf("%s\n", json_object_to_json_string(control_hardware));
void send_hardware_all_client(char *hardware_buf){
int iTableR
int client_
MYSQL_RES *res_
res = mysql_query(my_con, "select client_fd from client_fd");
if (res) {
printf("SELECT error:%s\n",mysql_error(my_con));
res_ptr = mysql_store_result(my_con);
if(res_ptr) {
iTableRow = mysql_num_rows(res_ptr);
for(i=0; i&iTableR i++){
sqlrow = mysql_fetch_row(res_ptr);
client_fd = atoi(sqlrow[0]);
write(client_fd, hardware_buf, strlen(hardware_buf));
printf("Control send client[%d]:%s\n",client_fd,hardware_buf);
mysql_free_result(res_ptr);
void send_client_reg_OK(int client_fd){
struct json_object *json_obj = json_object_new_object();
json_object_object_add(json_obj,"reg",json_object_new_string("ok"));
const char *send_buf = json_object_to_json_string(json_obj);
write(client_fd, send_buf, strlen(send_buf));
void send_client_reg_false(int client_fd){
struct json_object *json_obj = json_object_new_object();
json_object_object_add(json_obj,"reg",json_object_new_string("false"));
const char *send_buf = json_object_to_json_string(json_obj);
write(client_fd, send_buf, strlen(send_buf));
void send_client_login_OK(int client_fd){
struct json_object *json_obj = json_object_new_object();
json_object_object_add(json_obj,"login",json_object_new_string("ok"));
const char *send_buf = json_object_to_json_string(json_obj);
write(client_fd, send_buf, strlen(send_buf));
void send_client_login_false(int client_fd){
struct json_object *json_obj = json_object_new_object();
json_object_object_add(json_obj,"login",json_object_new_string("false"));
const char *send_buf = json_object_to_json_string(json_obj);
write(client_fd, send_buf, strlen(send_buf));
CFLAGS:=-Wall -g -lpthread -ljson -lmysqlclient
SRC:=${wildcard *.c}
OBJ:=${patsubst %.c,%.o,$(SRC)}
server:$(OBJ)
$(CC) -o $@ $^ $(CFLAGS)
%.o:%.c myhead.h
$(CC) -o $@ -c $& $(CFLAGS)
.PHONY:clean print
@rm -f *.o test .*.sw?
@echo $(SRC)
@echo $(OBJ)
muyang_ren
排名:第16096名
(30)(27)(4)(7)(28)(3)(17)(9)家庭all in one服务器的简单搭建和监控摄像头的应用
我的图书馆
家庭all in one服务器的简单搭建和监控摄像头的应用
追加修改( 19:09:27):文中提到的石像鬼x64的 本号潜水一年,第一次写原创,不当之处请多见谅。这次谈谈我家里的网络设备布置吧,由于等了半年的3825U定制主板在跳票3个月的情况下,本以为马上可以用上,老板却突然来了个主板layout错误,得推倒重来,最起码到年底,而且硬件涨价,估计还得加价的情况下,一怒之下下了另一家新推出的i3 5005u主板,为了避免广告嫌疑,就不上那家店的链接了,主要配置我简单说下:i3 5005U ES版,2个全高mini-pcie接口,一个sata3接口,3个千兆网卡接口,用的是12V dc电源,自己配上了64g msata,12G的内存,和一个3T的机械硬盘,由于配的机箱太小,所以机械硬盘外置了,这是装好的图。这台机子的基础框架是底层结构为esxi,上层的操作系统分别为win2016,石像鬼ros,黑群晖,esxi由U盘引导,操作系统装于msata中,这样即使重装esxi也不会对虚拟机造成破坏下面分布讲下各虚拟机的用途和作用一:石像鬼ROS
此系统为lean大经过编译的openwrt,操做简单,功能很强大。包含了去广告,fan墙,qos限速,kms激活服务等各种功能,重点讲下kms服务,在此子网下的所有设备安装windows的系列产品都可以自动激活,无需输入命令,包括最新的win10,win2016,office 2016等,可谓神奇,如果有需要把相应端口映射到公网,就可以实现外网设备的kms激活。 此ros我分配了一个核心,2G内存,带机能力非常强大,这是我家里的100M宽带,不支持多拨二:win2016 此版本为最新发布的正式版,用起来感觉相当不错,非常稳定,我分配了2个核心,8G内存,上面搭建了NFS、威动影音、FTP、KCPTUN、VPN等一些简单服务。其中和其他系统有连带关系的是hanwin NFS和E盘(机械硬盘)的共享,具体用途下面讲。三:黑群晖 黑群晖原创里很多大神讲的很多了,我这边的方案是win2016下的虚拟盘通过NFS后由群晖挂载,这样数据安全性和共享性相对更高。具体方案可以参考下这篇
四、网络摄像头 我这边的摄像头是当时看到推荐买的小兴看看
由于不带有云存储,所以要自己想办法,我的方案是视频读写到win2016共享的E盘上面,然后在将此文件夹通过360云盘进行同步,变相的实现云同步不过有些bug,过段时间需要将摄像头重启下,不然记录会中断,看来只能写个脚本自动执行下重启了。我选择的是覆盖读写,为了防止硬盘被写爆,我就给磁盘做了个配额,设立了个账号,给了300G的磁盘空间配额,到时满了将自动覆盖写入,300g也够存好几个月了总结 这种方法最低成本的实现了简单的家庭服务器的搭建,基本上家庭中常用的功能都能得到较完善的解决,如果有什么不清楚的可以留言,我在能力范围内将尽可能解答 ,家里还有很多好玩的东西,如有各位看官喜欢的话下次再晒晒。
TA的最新馆藏[转]&

我要回帖

更多关于 大神f1不能连接电脑 的文章

 

随机推荐