VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2340|回复: 7

[原创] c语言实现的手机控制电脑简单源码

[复制链接]
48_avatar_middle
在线会员 发表于 2017-1-21 21:13:59 | 显示全部楼层 |阅读模式
本帖最后由 heiyang1563 于 2017-1-21 22:02 编辑

刚来报个到,还是菜鸟阶段,看了Syc的授课视频觉得讲得很清楚,来看看,顺便贡献一段刚写的手机控制电脑源码,希望对读者有帮助!
有什么建议或问题可以联系作者QQ1249223183
分两部分:手机端和电脑端  ↓ ↓ ↓ ↓

电脑端源码
// socket.cpp : 定义控制台应用程序的入口点。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<winsock2.h>
#include<Windows.h>
#define le 500
#pragma comment(lib,"ws2_32.lib")   
char readbuf[1024];
        char writebuf[1024];
struct message{
char from[20]; //发送者个人ID
char to[20]; //接收者ID
char name[30];//昵称
int num;        //执行码
char concrol[30];//命令
int length; //发送的消息主体的长度
char mess[le];//消息和代码部分
};
struct message Write,Read;
int control1();

int main()
{
        char  cmd[20] = "shutdown -s -t";
        WSADATA wsaData;
        control1();
        printf("     请在手机端输入本电脑IP地址连接!\n");
        if (NOERROR != WSAStartup(MAKEWORD(2, 2), &wsaData))
        return(1);
        SOCKET sockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        // AF_UNIX只能够用于单一的Unix 系统进程间通信,
        // 而AF_INET是针对Internet的,因而可以允许在远程
        sockaddr_in addrServer;    //ip地址
        addrServer.sin_family = AF_INET;
        addrServer.sin_addr.s_addr =htonl(INADDR_ANY);
        //inet_addr("100.64.86.231");
        addrServer.sin_port = htons(8091);
        bind(sockServer, (SOCKADDR*)&addrServer, sizeof(addrServer));///绑定
        listen(sockServer, SOMAXCONN);    //监听

        SOCKET AcceptSocket=accept(sockServer, NULL, NULL);                //等待返回接受
   printf("手机已连接!\n");
int readLength=recv(AcceptSocket, readbuf, 1024, 0);
                if(readLength>0)       
                {
                        readbuf[readLength]=0;
memcpy(&Read,readbuf,sizeof(Read));
if(Read.num==0)
{
system("cls");
printf("收到消息:%s,长度:%d\n",Read.mess,Read.length);

                        memset(Write.mess,0,sizeof(Write.mess));  //清空缓存
                        //sprintf(Write.mess,"received your msg:'%s'\n",Read.mess);
                        //scanf("%s",Write.mess);                // DEFAULT_BUFLEN
        memset(writebuf,0,1024);//清空发送缓存
        //memcpy(&Write,&Read,sizeof(Read));                //转发接收的消息
Write=Read;
        memcpy(writebuf,&Write,sizeof(Write));
        //发送数据
        send(AcceptSocket, writebuf,sizeof(writebuf), 0);// (int)
                        while(1)
                        {
                                int readLength=recv(AcceptSocket, readbuf, 1024, 0);
                                if(readLength>0)
                                {
                        readbuf[readLength]=0;

                //接收数据
               
                        memcpy(&Read,readbuf,sizeof(Read));
                        printf("收到消息:%s,长度:%d\n",Read.mess,Read.length);

                        memset(Write.mess,0,sizeof(Write.mess));  //清空缓存
                        //sprintf(Write.mess,"received your msg:'%s'\n",Read.mess);
                        //scanf("%s",Write.mess);                // DEFAULT_BUFLEN
        memset(writebuf,0,1024);//清空发送缓存
        //memcpy(&Write,&Read,sizeof(Read));                //转发接收的消息
Write=Read;
        memcpy(writebuf,&Write,sizeof(Write));
        //发送数据
        send(AcceptSocket, writebuf,sizeof(writebuf), 0);// (int)
                                }
                                }
}
else
{
switch (Read.num)
        {
        case 11:
                //control1();
Write=Read;
memset(Write.mess,0,sizeof(Write.mess));//清空缓存
memcpy(Write.mess,"please input time!",sizeof("please input time!"));
        memcpy(writebuf,&Write,sizeof(Write));
        //发送数据
        send(AcceptSocket, writebuf,sizeof(writebuf), 0);
readLength=recv(AcceptSocket, readbuf, 1024, 0);
                if(readLength>0)       
                {
                        readbuf[readLength]=0;
memcpy(&Read,readbuf,sizeof(Read));

memset(Write.mess,0,sizeof(Write.mess));//清空缓存
memcpy(Write.mess,"your computer will be turned off!",sizeof("your computer will be turned off!"));
        memcpy(writebuf,&Write,sizeof(Write));
        //发送数据
        send(AcceptSocket, writebuf,sizeof(writebuf), 0);

        system("Shutdown -s -t strtol(t,&nbsp;NULL,&nbsp;10)");
                }
                break;
        case 22:
                //control1();
        //        ShowWindow(GetConsoleWindow(),SW_HIDE);  //隐藏窗口

        system("mode con cols=25 lines=5");
        system("date /T");
        system("time /T");
        system("color 3");
                printf("电脑即将关机!\n");
                Sleep(1000);
                system("shutdown -p");
                break;
        case 33:
                //control1();
                printf("注销计算机!\n");
                system("shutdown -1");
                break;
        case 44:
        //        control1();
                while(1)
                {
                Write=Read;
memset(Write.mess,0,sizeof(Write.mess));//清空缓存
memcpy(Write.mess,"OK!",sizeof("OK!"));
        memcpy(writebuf,&Write,sizeof(Write));
        //发送数据
        send(AcceptSocket, writebuf,sizeof(writebuf), 0);
readLength=recv(AcceptSocket, readbuf, 1024, 0);
                if(readLength>0)       
                {
                        readbuf[readLength]=0;
memcpy(&Read,readbuf,sizeof(Read));
printf("%s已执行!\n",Read.mess);
system(Read.mess);
                }
                }
                break;
        case 55:
                //control1();
                ;
                break;
                }


}
                       
                }
        WSACleanup();
                system("pause");
        return 0;
}
int control1()
{
        system("title 手机控制电脑2.0测试版");
        system("mode con cols=50 lines=48");
        system("date /T");
        system("time /T");
        system("color 3");
        return 0;
}

/************************************************************************************************/

手机端源码   ↓ ↓ ↓ ↓

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include<string.h>
#include<conio.h>          
#define le 900
           char ipaddr[20]="192.168.1.107";
        char readbuf[1024];
        char writebuf[1024];
        int connectRet,socketfd;
        struct sockaddr_in clientAddr;
        int port=8091;
        int init1();
        int control();
        int message();
struct message{
char from[20]; //发送者个人ID
char to[20]; //接收者ID
char name[30];//昵称
int num;  //执行码
char concrol[30];//命令
int length; //发送的消息主体的长度
char mess[le];//消息和代码部分
};
struct message Write,Read;
int main()
{
         char g;
        //初始化
        memcpy(Write.from,"100001",sizeof("100001"));
        memcpy(Write.to,"123456",sizeof("123456"));
        memcpy(Write.name,"游客",sizeof("游客"));
        Write.num=0;
        memcpy(Write.concrol,"colse",sizeof("colse"));
        Write.length=strlen(Write.mess);
        memset(Write.mess,0,sizeof(Write.mess));//清空缓存
        clrscr();
                printf("      远程控制电脑程序!\n\n");
                printf("      作者:*p=NULL;\n\n       QQ:1249223183\n\n");
        printf("  使用前请在电脑运行配套程序!\n\n");
        printf("  当前ip地址为 %s ,是否要修改: 是(y)否(n)\n(说明:本程序只用于局域网,请确保所填ip地址在同一局域网下!)\n\n",ipaddr);
        scanf("%c", &g);
        switch (g)
        {
        case 'y':
                printf("请输入电脑端IP,格式如:192.168.1.107\n");
               
                scanf("%s",ipaddr);
                //printf("请输入电脑的端口,格式如:8091\n");
        //        scanf("%d",&port);
                break;
        case 'n':
                ;
                break;
                }
        //signal(SIGPIPE,SIG_IGN);//屏蔽管道破解信号,一般服务器都会屏蔽这个型号
        socketfd = socket(AF_INET,SOCK_STREAM,0);//创建套接字 ,AF_NET:ipv4,SOCK_STREAM:TCP协议
        if(socketfd == -1)
        {
                printf("创建套接字失败!\n");
        }
        else
        {
        //        return 0;
                printf("创建套接字成功!\n");
                bzero(&clientAddr,sizeof(clientAddr));//相当于memset
                clientAddr.sin_family=AF_INET;//ipv4
                //ip地址:0x7f000001:127.0.0.1
                //0x7f:127

                clientAddr.sin_addr.s_addr=inet_addr(ipaddr);
                //=htonl(0x7f000001);
                clientAddr.sin_port = htons(port);//设置端口号
                connectRet=connect(socketfd,(struct sockaddr*)&clientAddr,sizeof(struct sockaddr));
                if(-1==connectRet)
                {
                        printf("连接到电脑失败!\n");
                }
                else
                {
                        printf("连接到电脑成功!\n");
                        //printf("请输入要发送的消息并回车:");
                init1();
                }
                close(socketfd);
        }
        printf("程序结束\n");
        return 0;
}
int  init1()
{
int w;
printf("请选择!\n");
        printf("1:---------控制功能———————\n");
        printf("2:---------通讯功能--------------\n");
scanf("%d", &w);
        switch (w)
        {
        case 1:
                control();
                break;
        case 2:
                message();
                break;
                }
return 0;
}

int control()
{
char t[5] = "0";
        int gg;
        clrscr();
    printf("--------手机控制电脑---------\n");
        printf("1:---------定时关机———————\n");
        printf("2:---------立即关机--------------\n");
        printf("3:---------消注计算机-----------\n");
        printf("4:---------其他命令控制-----------\n");
        printf("5:---------返回主界面------------\n");
        printf("------------------------------\n");
scanf("%d", &gg);
switch (gg)
        {
        case 1:
               
                Write.num=11;
                memcpy(writebuf,&Write,sizeof(Write));
                        write(socketfd,writebuf,sizeof(writebuf));

int readLength=read(socketfd,readbuf,1024);
                        if(readLength>0)
                        {
                                readbuf[readLength]=0;
                                memcpy(&Read,readbuf,sizeof(Read));
                                printf("%s\n",Read.mess);
                                        printf("单位s\n");
                                scanf("%s",t);
                                Write=Read;
memset(Write.mess,0,sizeof(Write.mess));//清空缓存
memcpy(Write.mess,&t,strlen(t));
        memcpy(writebuf,&Write,sizeof(Write));
write(socketfd,writebuf,sizeof(writebuf));
        printf("单位s\n");
                        }
                break;
        case 2:
               
                Write.num=22;
                        memcpy(writebuf,&Write,sizeof(Write));
                        write(socketfd,writebuf,sizeof(writebuf));

                break;
        case 3:
               
                Write.num=33;
                memcpy(writebuf,&Write,sizeof(Write));
                        write(socketfd,writebuf,sizeof(writebuf));

                break;
        case 4:

        clrscr();
                Write.num=44;
                memcpy(writebuf,&Write,sizeof(Write));
                        write(socketfd,writebuf,sizeof(writebuf));
                                clrscr();
while(1)
                        {
int readLength=read(socketfd,readbuf,1024);
                        if(readLength>0)
                                {
                                readbuf[readLength]=0;
                                memcpy(&Read,readbuf,sizeof(Read));
                                printf("%s\n",Read.mess);
                                printf("请输入DOS命令!:\n");
                        Write=Read;
                        memset(Write.mess,0,sizeof(Write.mess));//清空缓存
                        scanf("%s",Write.mess);
                        memcpy(writebuf,&Write,sizeof(Write));
                        write(socketfd,writebuf,sizeof(writebuf));
                                }
                        }       
                break;
        case 5:
        init1();
                break;
                }
       
}

int message()
{
clrscr();
printf("请输入名字!\n");
scanf("%s",Write.name);
while(1)
{

                        memset(Write.mess,0,sizeof(Write.mess));//清空缓存
                        scanf("%s",Write.mess);
                    Write.length=strlen(Write.mess);
                        memcpy(writebuf,&Write,sizeof(Write));
                        write(socketfd,writebuf,sizeof(writebuf));
                        int readLength=read(socketfd,readbuf,1024);
                        if(readLength>0)
                        {
                                readbuf[readLength]=0;
                                memcpy(&Read,readbuf,sizeof(Read));
                                printf("%s:%s\n",Read.name,Read.mess);
                        }


}
return 0;
}







上一篇:找高手做个业务,有能力的来接单,价格你开,不违法。
下一篇:vc2010列表控件导出excel
56_avatar_middle
在线会员 发表于 2017-1-22 15:54:44 | 显示全部楼层
此帖仅作者可见
48_avatar_middle
ico_lz  楼主| 发表于 2017-1-22 21:01:04 | 显示全部楼层
此帖仅作者可见
38_avatar_middle
online_vip 发表于 2017-1-25 20:00:07 | 显示全部楼层
此帖仅作者可见
48_avatar_middle
ico_lz  楼主| 发表于 2017-1-26 00:19:58 来自手机 | 显示全部楼层
此帖仅作者可见
46_avatar_middle
在线会员 发表于 2017-6-17 23:44:59 | 显示全部楼层
此帖仅作者可见
75_avatar_middle
在线会员 发表于 2017-12-17 19:49:54 | 显示全部楼层
此帖仅作者可见
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-21 13:43

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表