毕业设计网
JSP,JAVA | python | nodejs | android,安卓 | PHP | 微信小程序 |

服务器控制终端-远程监控

 本文是在借鉴国内外优秀同类软件的基础上,由我和靳风友各自独立完成的。由于协调上出的一些问题,两人的工作有重复的地方。
我完成的功能模块是远程计算机屏幕监控,远程通信和控制远程计算机的重新启动和关闭。靳风友完成的任务是远程控制系统的总体设计以及远程计算机屏幕的抓取。


 

在此采用的是可靠的有连接的流式套接字,并且采用了多线程和异步通信机制能,有效避免一些函数(如accept()等)的阻塞会引起整个程序的阻塞。由于套接字编程方而的书籍资料非常丰富,对其进行网络编程做了很详细的描述,故本文在此只针对一些关键部分做简要说明,有关套接字网络编程的详细内容请参阅相关资料[9]。采用流式套接字的服务器端的主要设计流程可以归结为以卜几步:
1.创建套接字

sock=socket (AF_NET,SOCK STREAM, 0);
   
该函数的第一个参数用于指定地址族,在Windows下仅支持AF_NFT(TCP/IP地址):第二个参数用于描述套接字的类型,对于流式套接字提供有SOCK STREAM:最后一个参数指定套接字使用的协议,一般为0。该函数的返回值保存了新套接字的句柄,在程序退出前可以用closesocket()函数来将其释放。

    2. 绑定套接字

        服务器方一旦获取了一个新的套接字后应通过bind()将该套接字与本机上的一个端口相关联。此时需要预先对一个指向包含有本机IP地址和端口信息的sockaddr_in结构填充一些必要的信息,如本地端口号和本地主机地址等。然后就可经过bind()将服务器进程在网络上标识出来。需要注意的是由于1024以内的端口号都是保留的端口号,因此如无特别需要一般不能将sockin.sin_port的端口号设置为1024以内的值,下面看一下服务器套接字的程序代码过程。
SOCKET sock;
Sockaddr in sockin;
sock=socket (AF_INET,SOCK_STREAM,0);
sockin.sin_family=AF_NET;
sockin.sin_addr.s_addr=0;
sockin.sin_port=htons(USERPORT);
bind(sock,(LPSOCKADDR)&sockin,sizeof(sockin));

3. 侦听套接字
建立连接后,服务端套接字要调用listen ()函数,此调用是而向连接服务器,表明它愿意接收连接。Listen()需要在accept)之前调用,listen()函数的声明如下:

     Int PASCAL FAR listen(SOCKET s,int backlog);

       参数s标识一个本地已建立但尚未连接的套接字句柄,服务器愿意从它上面接收请求。
     参数backlog表示请求连接队列的最大长度,用于限制排队请求的个数。目前允许的最大值为50。
   
4.等待客户机的连接
   这里需要通过accept)调用等待接收客户端的连接以完成连接的建立。由于该函数在没有客户端进行申请连接之前会处于阻塞状态,因此如果采取通常的单线程模式会导致整个程序一直处于阻塞状态而不能响应其他的外界消息。为了解决此问题,可以为该部分代码单独开辟一个线程,这样阻塞将被限制在该线程内而不会影响到程序整体,下面是等待客户机连接的代码实现。
 

以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询

上一篇:web信息的提取与分析程序
下一篇:基于OpenGL的三维游戏设计—光照技术


版权所有 毕业设计网联系qq:242219979 © 2007-2022