精华内容
下载资源
问答
  • 局域网聊天小程序

    2016-04-18 11:00:48
    1:shell.sh -------脚本用于编译程序,直接运行 2:tcp_server.c服务端 ------------- *_tcp_client.c客户端 3:file.c用于文件上传测试,其它的也可以 4:登陆:IP是自己乌邦图的,端口是6000
  • 今天,编就为大家带来一个局域网内远程控制计算机的简单教程,希望能为各位带来帮助。步骤一:设置计算机远程连接首先,在计算机间建立好了局域网以后,我们需要设置好被控制计算机的远程连接。在需要被远程控制的...

    局域网控制远程计算机教程的方法

    对于许多计算机新手来说,如何使用局域网进行计算机的远程控制,是一个麻烦的问题。今天,小编就为大家带来一个局域网内远程控制计算机的简单教程,希望能为各位带来帮助。

    5a33ddf25c4ba16690.png

    步骤一:设置计算机远程连接

    首先,在计算机间建立好了局域网以后,我们需要设置好被控制计算机的远程连接。在需要被远程控制的计算机的桌面上,用右键单击“我的电脑”图标并在菜单中选择“属性”。在跳出的“属性”窗口中,单击其中的“远程”选项卡,勾选上“允许用户远程连接到此计算机”这一选项,设置好以后再单击“确定”按钮保存以上设置即可。

    步骤二:建立计算机连接

    在控制的计算机一方,依次点击“开始”-“运行”,在运行窗口中输入“mstsc”,按回车运行。接下来,我们即可使用vlookup这一函数来打开远程连接工具。打开远程工具后,我们只需输入被控制的.计算机的IP地址,即可进行连接。

    步骤三:下载控制软件

    接下来,在控制端与被控制端两台电脑上均下载、安装好“网络人远程控制软件旗舰版”软件,另外在被控端电脑上解压、安装“被控端”这一压缩包。在两方安装好软件以后,我们就可以通过该软件实现计算机间的远程控制了。

    步骤四: 使用软件远程控制

    在控制端一方,打开软件,点击注册按钮,输入相关信息后注册一个账号并使用该账号登录。而在被控端的计算机上,安装好被控端软件后,任务栏中会显示有被控的图标。单击该图标后,进入该软件,输入相同的账号密码登录。此时,在控制端的计算机上,即可在“在线主机”中查看被控电脑。接下来,用户就可以根据自己的需要进行设置了。(提示:一般情况下,基本设置的选项中,除了“记录被控日志”之选,应当勾选上其他所有选项。)

    【局域网控制远程计算机教程的方法】相关文章:

    展开全文
  • win7系统,最近在做一些关于服务器的测试,一台电脑测试效果不好,有没有什么方法可以实现远程控制局域网其他电脑后台运行指定的测试小程序
  • vb 局域网文件与数据传输小程序。实现局域网内的文件和数据的传输功能。客户端和服务器端分别有两个winsock控件,分别负责文件的传输和数据的传输。 可直接运行,源码全开放。 使用时,启动服务器端程序和客户端程序...
  • 基于socket的局域网聊天室程序 源代码,包含登录注册添加好友、一对多,一对一和查看聊天记录功能,类似一个小型qq,含客户端和服务端两部分。 运行时注意修改端口,还有本例用到数据库,注意环境配置
  • 微信小程序局域网下开发使用 成功只需要两步,请耐心看完。 官网原文: 局域网通信 基础库 2.4.0 提供了 wx.startLocalServiceDiscovery 等一系列 mDNS API,可以用来获取局域网内提供 mDNS 服务的设备的 IP。 wx....

    微信小程序局域网下开发使用

    成功只需要两步,请耐心看完。

    官网原文:
    局域网通信
    基础库 2.4.0 提供了 wx.startLocalServiceDiscovery 等一系列 mDNS API,可以用来获取局域网内提供 mDNS 服务的设备的 IP。 wx.request/wx.connectSocket/wx.uploadFile/wx.downloadFile 的 url 参数允许为 I P : {IP}: IP:{PORT}/${PATH} 的格式,当且仅当 IP 与手机 IP 处在同一网段且不与本机 IP 相同(一般来说,就是同一局域网,如连接在同一个 wifi 下)时,请求/连接才会成功。
    在这种情况下,不会进行安全域的校验,不要求必须使用 https/wss,也可以使用 http/ws。

    wx.request({
      url: 'http://10.9.176.40:828'
      // 省略其他参数
    })
    
    wx.connectSocket({
      url: 'ws://10.9.176.42:828'
      // 省略其他参数
    })
    

    第一点注意:且仅当 IP 与手机 IP 处在同一网段且不与本机 IP 相同,只有这样才能完成通信,个人试过了很多方法。

    这里指的是同一网段,如果这里不是很懂的同学,可以自行查阅。
    本人进行了多次尝试。

    【成功案例说明:】
    服务器ip:192.155.0.100
    微信小程序ip:192.155.0.101
    通信没有问题,请看清楚,ip地址前三段数字是保持一样的。链接同一wifi下就可以实现这样的操作。

    【失败案例】
    服务器ip:192.155.1.100
    微信小程序ip:192.155.0.101
    通信延时,最后请求失败,ip前两位数字保持一样,通信一样是失败的。

    综上所述,要在同一网段,这个貌似有计算方法。本人不是很懂,最好保持前三位数一样,即可完成通信。

    第二点注意:因为局域网没有外网(无法百度等上网),在手机没有3g/4g网络下,通信可以正常进行吗?是完全可以的。

    【成功案例说明:】
    操作步骤如下:

    1. 开启自己搭建的局域网服务器。 确认区域网ip地址,例如:ip:192.155.1.100
    2. 将写好的小程序服务器,上传至测试版本,生成二维码。记住微信小程序get请求地址写:ip:192.155.1.100
      代码如下:
    wx.request({
      url: 'http://10.9.176.40:828'
      // 省略其他参数
    })
    

    3.打开手机3g/4g网络,扫码第2步产生的二维码,等待下载小程序完成。此时通信异常无法正常请求数据。
    但是小程序已经下载到了手机端。保存程式在后台。
    4.把手机网络关闭,打开wifi连接同一网段下的网路。检查网段ip,应该为ip:192.155.1.101。此时手机的ip地址应该和服务器前三位是保持一样的。
    5.请求数据,成功运行!离线版完成。
    6.这样的手机可以接223台,满足一般办公室需求!
    7.如果对家有帮助,可以关注,收藏点赞,然后推荐一下自己写的书。
    本人18岁番茄原创小说《系统:以下犯上才可以变强》

    展开全文
  • 虽然局域网内聊天的工具很多,但小巧灵活实用的不多,这个软件不用服务器,无需安装,可以随时删除对话,总之一句话:很实用,很方便。<BR> 此外,要说明一点,此软件除了聊天主窗体是当初在单位作的,只是在后来...
  • 为规范中国核工业第五建设有限公司福清核电项目部(以下简称“项目部”)局域网的使用和管理,保障局域网网络系统安全、稳定运行,特制定本程序
  • 局域网截包程序设计

    千次阅读 2007-12-31 22:58:00
    刚才收到了一个留言,第一次有人给我留言,很感动,给了我很大的信心,原来我写的东西还有点价值,只有当作业交上去的价值吧,现在把一年多前的在学校的一个作业程序贴上,希望有人把它当成作业。 实验目的目前的...

      刚才收到了一个留言,第一次有人给我留言,很感动,给了我很大的信心,原来我写的东西还有点价值,只有当作业交上去的价值吧,现在把一年多前的在学校的一个作业程序贴上,希望有人把它当成作业。

     

    实验目的
    目前的局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截取。因此,黑客只要接入以太网上的任一节点进行侦听,就可以捕获发生在这个以太网上的所有数据包,对其进行解包分析,从而窃取关键信息,这就是以太网所固有的安全隐患。网上主要的免费黑客攻击工具如SATAN、ISS、NETCAT等均将以太网侦听作为基本的手段。
    本实验实现一个局域网截包程序,目的在于使学生能更好地理解网络的工作机制(包括封包机制、协议分析等),该实验是对《计算机网络》课程一个有益的补充。
    在一个局域网环境中,用C 语言实现下面的基本功能:
    (1)确定截包的方法:包括RAW 模式SOCKET、PACKET32以及直接作为驱动程序挂在NDIS上
    (2)要求截获以下包的类型并分析:以太网帧格式、IP包、ICMP包、TCP报文段、UDP报文等相关字段进行描述。
    实验按下述步骤进行:
    (1)       熟悉RAW模式的SOCKET编程
    (2)       熟悉PACKET32的工作机制
    (3)       熟悉WINDOWS 2000环境下NDIS驱动程序的编写方法
    (4)       编写基于上述某一机制的局域网截包的实现程序;
    (5)       在模拟实现环境下调试并运行自己编写的协议实现程序;
    (6)       如出现异常情况,在实验报告中记录并分析可能的原因
    #define RCVALL_ON 1
    #define MAX_ADDR_LEN 16 //点分十进制地址的最大长度
    #define MAX_PROTO_TEXT_LEN 16 //子协议名称(如"TCP")最大长度
    #define WINSOCK_VERSION MAKEWORD(2, 2)
    #pragma comment(lib, "Ws2_32.lib")
    #include <stdio.h>
    #include <winsock2.h>
    #include <mstcpip.h>
    #include <conio.h>
    typedef struct iphdr          //定义IP首部
    {
        unsigned char h_lenver; //4位首部长度+4位IP版本号
        unsigned char tos; //8位服务类型TOS
        unsigned short total_len; //16位总长度(字节)
        unsigned short ident; //16位标识
        unsigned short frag_and_flags; //3位标志位
        unsigned char ttl; //8位生存时间 TTL
        unsigned char proto; //8位协议 (TCP, UDP 或其他)
        unsigned short checksum; //16位IP首部校验和
        unsigned int sourceIP; //32位源IP地址
        unsigned int destIP; //32位目的IP地址
    }IPHeader;
    typedef struct _tcphdr    //定义TCP首部
    {
     USHORT th_sport; //16位源端口
     USHORT th_dport; //16位目的端口
     unsigned int  th_seq; //32位序列号
     unsigned int  th_ack; //32位确认号
     unsigned char th_lenres; //4位首部长度/6位保留字
     unsigned char th_flag; //6位标志位
     USHORT th_win; //16位窗口大小
     USHORT th_sum; //16位校验和
     USHORT th_urp; //16位紧急数据偏移量
    }TCP_HEADER;
    typedef struct _udphdr //定义UDP首部
    {
        unsigned short uh_sport; //16位源端口
        unsigned short uh_dport; //16位目的端口
        unsigned short uh_len; //16位长度
        unsigned short uh_sum; //16位校验和
    }UDP_HEADER;
    typedef struct _icmphdr   //定义ICMP首部
    {
     BYTE   i_type;    //8位类型
     BYTE   i_code;    //8位代码
     USHORT i_cksum;   //16位校验和
     USHORT i_id;    //识别号(一般用进程号作为识别号)
     USHORT i_seq;    //报文序列号
     ULONG  timestamp;   //时间戳
    }ICMP_HEADER;

    int  iTTL,iLEN,iBYTES;
    char szSourceIP[MAX_ADDR_LEN], szDestIP[MAX_ADDR_LEN];
    int  iSourcePort,iDestPort;
    int  fflag=0;//file flag
    #define PACKAGE_SIZE sizeof(IPHeader)+1000
    void HandleError(char *func);
    //functions
    int DecodeTcpPack(char *, int,FILE *); //TCP解包函数
    int DecodeUdpPack(char *, int,FILE *); //UDP解包函数
    int DecodeIcmpPack(char *, int,FILE *); //ICMP解包函数
    //MAIN
    int main(int argc, char *argv[])
    {
     sockaddr_in saSource,saDest;
     WSAData wsaData;
     char buf[PACKAGE_SIZE];
        WSAStartup(WINSOCK_VERSION, &wsaData);
        SOCKET sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
        if(sock == SOCKET_ERROR)
        {
            HandleError("socket");
            WSACleanup();
            return -1;
        }
        //获取本机IP地址
        struct sockaddr_in addr;
        memset(&addr, 0, sizeof(addr));
        //addr.sin_addr.S_un.S_addr = inet_addr("192.168.1.101");
    char name[256];
     PHOSTENT hostinfo;
     if( gethostname ( name, sizeof(name)) == 0)
     {
      if((hostinfo = gethostbyname(name)) != NULL)
      {
       memcpy(&(addr.sin_addr.S_un.S_addr) , (struct in_addr *)*hostinfo->h_addr_list , sizeof((struct in_addr *)*hostinfo->h_addr_list ));
      }
     }
        addr.sin_family = AF_INET;
        if(bind(sock, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)//bind
        {
            HandleError("bind");
        }
     //设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
        int on = RCVALL_ON;
        DWORD num;
        if(WSAIoctl(sock, SIO_RCVALL, &on, sizeof(on), NULL, 0, &num, NULL, NULL) == SOCKET_ERROR)
        {
            HandleError("wsaIoctl set");
        }
        struct sockaddr_in from;
        int fromlen;
        int size;
     FILE *fp;
     if((fp=fopen("log.txt","w+"))==NULL)
     {
      printf("open file errer,can't save list to file");
      fflag=1;
     }
     //侦听IP报文
        while(!kbhit())
        {
            memset(buf, 0, sizeof(num));
            memset(&from, 0, sizeof(from));
            fromlen = sizeof(from);
      size=recvfrom(sock, buf, PACKAGE_SIZE, 0, (struct sockaddr*)&from, &fromlen);
            if(size == SOCKET_ERROR)
      {
       if(WSAGetLastError() == WSAEMSGSIZE)
                {
                    HandleError("recvfrom");
                    continue;
                }
            }
      IPHeader *iph=(IPHeader *)buf;
      /**/
      //源地址
       saSource.sin_addr.s_addr = iph->sourceIP;
       strncpy(szSourceIP, inet_ntoa(saSource.sin_addr), MAX_ADDR_LEN);
      //目的地址
       saDest.sin_addr.s_addr = iph->destIP;
       strncpy(szDestIP, inet_ntoa(saDest.sin_addr), MAX_ADDR_LEN);
      iTTL = iph->ttl;
      //计算IP首部的长度
      int IpHeadLen = 4 * (iph->h_lenver & 0xf);
      //根据协议类型分别调用相应的函数
      
            switch(iph->proto)
            {
            case IPPROTO_ICMP:
       DecodeIcmpPack(buf+IpHeadLen, size,fp);
                break;
            case IPPROTO_IGMP:
                printf("IGMP ");
       printf("%15s:      ->%15s:       ", szSourceIP, szDestIP);
                printf("%d",size);
                printf("%s/n", buf);
                break;
            case IPPROTO_TCP:
       DecodeTcpPack((buf+IpHeadLen),size,fp);
                break;
            case IPPROTO_UDP:
       DecodeUdpPack(buf+IpHeadLen, size,fp);
                break;
            default:
                printf("unknown datagram from %s/n", inet_ntoa(from.sin_addr));
                printf("%s/n", buf);
       break;
            }//end switch
      
            Sleep(200);
        }//end while
     fclose(fp);
        closesocket(sock);
        WSACleanup();
        printf("Stopped!/n");
     getch();
        return 0;
    }//end of main

    //TCP解包程序
    int DecodeTcpPack(char * TcpBuf, int iBufSize,FILE *fp)
    {
     unsigned char FlagMask;FlagMask = 1;
     int i;
     TCP_HEADER *tcph;
     
     tcph = (TCP_HEADER*)TcpBuf;
     //计算TCP首部长度
     int TcpHeadLen = tcph->th_lenres>>4;
     TcpHeadLen *= sizeof(unsigned long);
     char *TcpData=TcpBuf+TcpHeadLen; 
     iSourcePort = ntohs(tcph->th_sport);
     iDestPort   = ntohs(tcph->th_dport);
     
     //输出
     printf("TCP  ");
     printf("%15s:%5d ->%15s:%5d  ", szSourceIP, iSourcePort, szDestIP, iDestPort);
     printf("TTL=%3d  ", iTTL);
     if(fflag==1)
     
     //判断TCP标志位
     for( i=0; i<6; i++ )
     {
      if((tcph->th_flag) & FlagMask)
       printf("1");
      else printf("0");
      FlagMask=FlagMask<<1;
     }
     printf("  bytes=%4d", iBufSize);
     printf("/n");
     if(fflag=1)//写入文件
     fprintf(fp,"TCP  %15s:%5d ->%15s:%5d  TTL=%3d  ------  bytes=%4d/n"
      ,szSourceIP, iSourcePort, szDestIP, iDestPort, iTTL,iBufSize);
     return 0;
    }
    //UDP解包程序
    int DecodeUdpPack(char * UdpBuf, int iBufSize,FILE *fp)
    {
     UDP_HEADER *udph;
     udph = (UDP_HEADER*)UdpBuf;
     iSourcePort = ntohs(udph->uh_sport);
     iDestPort   = ntohs(udph->uh_dport);
     //输出
     printf("UDP  ");
     printf("%15s:%5d ->%15s:%5d  ", szSourceIP, iSourcePort, szDestIP, iDestPort);
     printf("TTL=%3d ", iTTL);
     printf("Len=%4d ", ntohs(udph->uh_len));
     printf("bytes=%4d", iBufSize);
     printf("/n");
     if(fflag=1)//写入文件
     fprintf(fp,"UDP  %15s:%5d ->%15s:%5d  TTL=%3d Len=%4d bytes=%4d/n"
      ,szSourceIP, iSourcePort, szDestIP, iDestPort, iTTL, ntohs(udph->uh_len), iBufSize);
     return 0;
    }
    //ICMP解包程序
    int DecodeIcmpPack(char * IcmpBuf, int iBufSize,FILE *fp)
    {
     ICMP_HEADER * icmph;
     icmph = (ICMP_HEADER * )IcmpBuf;
     int iIcmpType = icmph->i_type;
     int iIcmpCode = icmph->i_code;
     //输出
     printf("ICMP ");
     printf("%15s       ->%15s        ", szSourceIP, szDestIP);
     printf("TTL=%3d ", iTTL);
     printf("Type%2d,%d ",iIcmpType,iIcmpCode);
     printf("bytes=%4d", iBufSize);
     printf("/n"); 
     if(fflag=1)//写入文件
     fprintf(fp,"ICMP %15s       ->%15s        TTL=%3d Type%2d,%d bytes=%4d"
      , szSourceIP, szDestIP, iTTL,iIcmpType,iIcmpCode, iBufSize);
     return 0;
    }
    void HandleError(char *func)
    {
        char info[65]= {0};
        _snprintf(info, 64, "%s: %d/n", func, WSAGetLastError());
        printf(info);
    }
    展开全文
  • 我们上培训时做的一个例子,用Socket和线程编写的一个局域网聊天的例子。需要了解线程的知识!是个控制台程序……演示需要在CMD下运行,同时运行两个就好了。关键在于学习代码~嘿嘿
  • 用做局域网聊天的小程序运行在.net framework 2.0下
  • 基于Unity3d 局域网下可以联机的坦克游戏源码(发布后需要打开两个运行程序,一个用于创建服务器,另一个输入主机IP(通局域网下)后可以实现联机)在同一台电脑上运行时默认的IP都是127.0.0.1
  • 错误一:没设置不校验域名合法性 ...查看ip的方法:运行(win+R)→输入cmd→输入ipconfig→查看ip 详情请访问这个地址:查看IP图解 三:局域网防火墙没关闭 打开设置→打开网络→关闭防火墙 ...

    错误一:没设置不校验域名合法性 

    打开编辑器→右上角→详情→不校验合法域名

    错误二:请求ip地址不正确

    查看ip的方法:运行(win+R)→输入cmd→输入ipconfig→查看ip

    详情请访问这个地址:查看IP图解

    三:局域网防火墙没关闭

    打开设置→打开网络→关闭防火墙

    展开全文
  • * 所以如果我们写在一个进程中,程序运行到这个位置的时候就会阻塞在这里没有办法进行下去,所以我们,有启动了另一个线程 */ new Thread(new Runnable() { public void run() { // TODO Auto-...
  • 校园 局域网一些技巧

    千次阅读 2010-12-16 23:41:00
    校园 局域网一些技巧: 飞秋(或飞鸽—飞秋的简版) : 如果你已是一名大学生,或者你家里你工作学习的地方已经有了一个小局域网,就应该知道有这两个软件. 飞鸽——实现局域网文件互传/简单聊天,,不用像QQ那样登录...
  • 简单的程序来扫描您的 LAN,识别已启动的主机以及它们上打开的端口。 然后将此信息存储在数据库中。 设置 对于 OSX,使用brew安装 mongodb: brew update brew install mongodb 然后使用 pip 获取 python 扩展: ...
  • 在自己做的程序的发布版,放到局域网内其它机器上,在你电脑上就可以测试你开发的程序,在其它机器上运行效果,也可以修改新发现的Bug
  • 无线局域网 NDIS 端口驱动实现

    千次阅读 2008-04-29 21:49:00
    1 引言 无线局域网经过几年的发展,在技术上已经日渐成熟。尤其是IEEE推出802.11-1999和802.11b...在本文 中,首先介绍了端口驱动程序的基本要点,然后给出了基于Driver Studio开发PCMCIA接口编程I/O(Programmed
  • 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试 检查系统防火墙是否拦截了HBuilderX自带的nodejs
  • 请打开手机调试,并保证电脑和手机同一个局域网
  • 局域网聊天程序,首先我已经默认你的电脑已经配置好的java开发的一些环境,所需代码有两个java的源代码,他们分别是1:Server_Test.java-------2:Socket_Test.java 好了废话不多说了,直接上源码 1:Server_Test...
  • 用Java做的针对点对点通信(ServerSocket Socket)的小程序,包括收发信息,用swing开发界面,使用beautyeye美化的界面(高手写的,网上有) 使用说明: 1、将项目在导入eclipse中, 2、先运行...
  • 局域网LAN

    千次阅读 2017-04-14 20:29:52
    局域网概念 基本简介 局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程...
  • 内涵小程序代码及c#接口代码及微信开放平台扫码授权登录代码,在电脑端及手机端处于同一局域网内(同一个wifi)时可以调试运行
  • Visual C++程序设计:局域网技术

    千次阅读 2008-03-07 18:11:00
    | 18.2 | 局域网技术局域网是由在物理上彼此相隔不远的一组台式计算机...18.2.1 获取网卡地址在实际的应用程序中,经常需要在程序运行时获取MAC地址作为某种标识。MAC地址是网络适配器的物理地址,网络适配器又称网
  • 局域网工具

    2009-08-05 10:27:00
    局域网搜索软件(搜索、浏览局域网资源anExplorer) 绿色版 运行环境: Win9x/NT/2000/XP/ 文件大小: 356 K 软件等级: ★★★★ 软件类别: 国产软件 软件语言: 简体中文 授权方式: 破解版 最后整理: 200
  • 局域网速度测试是一款可以测试局域网速度的... 局域网速度测试用法:找两台电脑,一台做服务器,一台做客户机,服务器先运行程序,然后客户机再运行程序,填入服务器IP,再点击"测试",等几秒钟就会显示出速度了。
  • 局域网视频通话

    2014-11-18 15:41:56
    c# 局域网视频通话软件,本人亲自写的 ,绝对测试可用,主要使用的是tcp协议。在xp系统上需要开启点对点服务。可实现视频通话,文字发送,可录像。录像是录得当前程序运行的窗口。
  • 微信小程序如何在手机预览调试

    千次阅读 2020-04-29 11:13:59
    微信小程序里面app.js里ip改成电脑局域网ip 电脑防火墙关掉 手机上小程序点击右上方打开调试模式 图片上传application-dev.yml里面上传路径ip改成局域网ip 以上五点满足了手机就可以预览小程序了 ...
  • 局域网视频聊天.zip

    2019-06-14 22:39:05
    c# 局域网视频通话软件,本人亲自写的 ,绝对测试可用,主要使用的是tcp协议。在xp系统上需要开启点对点服务。可实现视频通话,文字发送,可录像。录像是录得当前程序运行的窗口。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,575
精华内容 30,630
关键字:

局域网运行小程序