当前位置: 主页 > 期刊大全 > 科技期刊 >

基于Java socket 远程监控程序的设计与实现

作者:李康 日期:2014-07-19 09:44 来源:电子技术与软件工程
摘要:本文介绍了Socket 通信机
制,采用C/S 模式,使用Java 语
言SocketAPI(套接字接口)以及
多线程技术实现多客户端远程监
控服务器的功能,实现了上传、
下载、截图、远程关机、远程输
入dos 命令等功能。
【关键词】Java 远程监控 Socket 通信
1 引言
Java 语言具有跨平台性,是一门丰富的面
向对象的程序设计语言,同时具有强大的网络
编程接口,这使得Java 在网络通信方面游刃
有余,网络上的计算机如果进行通信,一方面
要准确定位计算机在网络中的位置,另一方面
则是要进行数据的传输。而这些功能的实现则
要依靠Java 强大的网络编程接口,如Socket 类、
ServerSocket 类等。
2 Socket通信
在数据传输过程中按照传输的协议我们
分为TCP 和UDP 两种,其中TCP 是面向连
接的传输控制协议,传输信息过程中确保数
据的有序性、可靠性,为流式Socket 通信。
UDP 是用户数据报协议,不保证数据的可靠
性,为数据报式Socket 通信。
在java 中为实现TCP,Socket 提供了
两个基础的类(Socket 和ServerSocket),
Socket 类有两个作用:1、作为客户端向服务
器发出请求。2、在服务器端生成一个与客
户端对等的通信实体,实现一对一的通信。
ServerSocket 主要用于在TCP 传输的服务器端
建立一个监听端口,监听本地服务器是否接受
到客户机端的连接请求(当接收到请求的时候,
采用accept 方法确认连接,并在本地返回一个
Socket 对象,利用该Socket 对象与客户端的
Socket 实现建立通信)。
3 软件设计开发
在实际应用中,往往是在服务器上运行一
个永久的程序,它可以接收来自其他多个客户
端的请求,提供相应的服务。为了实现在服务
器方给多个客户提供服务的功能,需要利用多
线程实现多客户机制。用一个实现了runnable
的severworker 类来实现多线程。服务器总是
在指定的端口上监听是否有客户请求,一旦监
听到客户请求,服务器就会启动一个专门的服
务线程来响应该客户的请求,而服务器本身在
启动完线程之后马上又进入监听状态,等待下
一个客户的到来。
4 程序实现
4.1 服务器端程序编写
ServerSocket server=null;
Socket theSocket=null;
s e r v e r = n ew S e r v e r S o c k e t ( PORT _
NUMBER);// 监听端口
ServerWorker worker;
Thread thread;
while(true){ // 循环监听客户端的请求
theSocket=server.accept();
worker=new ServerWorker(theSocket);// 将
请求交给worker 线程处理
thread=new Thread(worker);
thread.start();}// 运行worker 里面相应的
操作
线程类的实现:
public void run ()
String message;
try{
FileWriter client=new FileWriter("client.
txt",true);
theReader=new DataInputStream(theSocket.
getInputStream());
// 获得客户端输入的相关信息
theWriter=new DataOutputStream(theSocket.
getOutputStream());
// 获得服务器端的输出信息
String inputStr,outputStr;
theWriter.writeUTF(" 欢迎进入网络远程监
控系统");
theWriter.flush();// 清空缓冲区,保证客户
端接收到相关信息
do{
inputStr=theReader.readUTF();
System.out.println(inputStr);
if (inputStr.equals("bye"))
break;
String[] Array=inputStr.split("#");
client=new FileWriter(Array[0]+".txt",true);
// 建立相关文件,将客户端执行的操作写入相
关日志文件中
if(Array[1].equals("upload")){}// 你想进行
的上传操作}}}
4.2 客户端的程序实现
String str=JOptionPane.showInputDialog("1.
输入你想连接到服务器端的IP 地址");
String sr=JOptionPane.showInputDialog("
输入你想连接到服务器端的端口号");
try{
theSocket=new Socket(str,a);// 将服务器ip
地址和端口号传进
theReader=new DataInputStream(theSocket.
getInputStream());
theWriter=new DataOutputStream(theSocket.
getOutputStream());
}catch(Exception e){System.out.println("can
not access to port "+sr); }
5 程序运行结果
主程序显示界面:通过选择相应的数字
来实现不同的功能
6 注意事项
应注意到:1. 当传一个较大的文件时,
需要分段传,因为tcp 包最大为64kb,往往我
们需要传的是一个很大的文件。还有注意输入
输出流的正确关闭,以及套接字socket 的正常
关闭。2. 总是先启动服务器程序,在启动客户
端程序,因本测试服务器和客户端为一台机器,
所以ip 地址选择为127.0.0.1。
参考文献
[ 1 ] a u t h o r . ( 美) K e n n e t h L . C a l v e r t
M i c h a e l J . D o n a h o o . J a v a T C P / I P
Socket 编程.
作者单位
中南大学计算机科学与技术湖南省长沙市 
410000

 


  博深论文网( www.bosslunwen.com ),是一个专门从事期刊推广、论文发表论文投稿指导的机构。本站提供整体论文发表解决方案:省级论文/国家级论文/核心论文/CN论文。
  论文投稿:bosslunwen@126.com
  咨询电话:18602588568
  在线咨询:
论文发表-论文投稿-发表论文86099078

版权所有:博深论文网 苏ICP备06011074号
论文投稿咨询电话:18602588568,在线咨询:论文发表-论文投稿-发表论文86099078,论文投稿:bosslunwen@126.com
本站点提供如下服务:论文发表 发表论文 论文投稿 职称论文发表 学术论文发表
山东省济南市城南路213号 本网站隶属于-济南富东化工有限公司