当前位置: 首页 > news >正文

远程访问 client and server

import java.io.BufferedReader;//io 包提供对流进行读写的工具也是tcp套接字通信唯一途径
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;//包提供套接字工具。

import java.net.UnknownHostException;

public class RemoteFileClient {
protected String hostIp;
protected int hostPort;
protected BufferedReader socketReader;//负责读数据的对象
protected PrintWriter socketWriter;//负责写数据的对象
public RemoteFileClient(String aHostIp,int aHostPort)
{
hostIp=aHostIp;
hostPort=aHostPort;
}
/**
* 向/远程服务器请求文件信息
* @param fileNameToGet
* @return
*/
public String getFile(String fileNameToGet)
{
StringBuffer fileLines=new StringBuffer();
try
{
socketWriter.println(fileNameToGet);
socketWriter.flush();
String line=null;
while((line=socketReader.readLine())!=null)
{
fileLines.append(line+"");
}
}
catch(IOException e)
{
System.out.println ("Error reading from file &"+fileNameToGet);
}
return fileLines.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
RemoteFileClient remoteFileClient = new RemoteFileClient("130.30.3.68", 3000);
[color=blue]remoteFileClient.setUpConnection();
String fileContents = remoteFileClient.getFile("c:\\RemoteFile.txt");[/color] remoteFileClient.tearDownConnection();
System.out.println(fileContents);

}
/**
*
*连/接到远程服务器
*/
public void setUpConnection()
{
try
{
Socket client = new Socket(hostIp,hostPort);//创建socket对象
OutputStream outToServerStream=client.getOutputStream();
InputStream inFromServerStream=client.getInputStream();
//把/Socket的InputStream包装进BufferedReader 以使我们能够读取流的行
socketReader = new BufferedReader(new InputStreamReader(inFromServerStream));
socketWriter = new PrintWriter(outToServerStream);[color=blue]
//把/Socket的OutputStream包装进PrintWriter 以使我们能够发送文件请求到服务器[/color] }
catch(UnknownHostException e)
{
System.out.println("Error setting up socket connection :unknown host at "+hostIp+":"+hostPort);
}
catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
/**
* 从/远程服务器上断开
*
*/
public void tearDownConnection()
{
try
{
socketWriter.close();
socketReader.close();
}
catch(IOException e)
{
System.out.println("Error tearing down socket connection "+e);
}
}

}

//服务器端的
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class RemoteFileServer {
int listendPort;
public RemoteFileServer(int aListenPort)
{
listendPort=aListenPort;
}
public void acceptConnections() throws IOException
{
ServerSocket server=new ServerSocket(listendPort);
Socket incomingConnection=null;
while(true)
[color=red]{//&://不/断监听直到来了一个连接请求,然后交由handleConnection处理[/color]

try {
[color=darkred][color=red]incomingConnection = server.accept();[/color][/color]
handleConnection(incomingConnection);
}
catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
public void handleConnection(Socket incomingConnection) throws IOException
{
OutputStream outputToSocket = incomingConnection.getOutputStream();
InputStream inputFromSocket = incomingConnection.getInputStream();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket));
[color=red]//只是获取client发送的一个文件名称,接收并且将文件的内容显示出来[/color]
FileReader fileReader = new FileReader(new File(streamReader.readLine()));
BufferedReader bufferedFileReader = new BufferedReader(fileReader);
PrintWriter streamWriter = new PrintWriter(outputToSocket);
String line = null;
while ((line = bufferedFileReader.readLine()) != null)
{
streamWriter.println(line);
}
fileReader.close();
streamWriter.close();
streamReader.close();
//切记,永远不要在关闭 Writer 之前关闭 Reader
}

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
// TODO 自动生成方法存根
RemoteFileServer server=new RemoteFileServer(3000);
server.acceptConnections();
}

}
http://www.xdnf.cn/news/820477.html

相关文章:

  • 图像处理----lena图像的由来
  • HG255D[OpenWrt]刷机
  • 一些网盘地址分享
  • cocostudio与cocosbuilder对比整理
  • 企业补丁管理必备的11个关键步骤
  • Redis Desktop Manager(Redis可视化工具)安装及使用教程
  • FME转换器 文本替换(StringReplacer)
  • SQL SERVER取时间书写方法大全
  • 10大常见网络安全攻击手段及防御方法总结
  • 国内三大PTPrivate Tracker站分析
  • AUTOIT教程
  • 计算机体系结构:编译器预取例题(优化前后失效次数计算)
  • 配置pcanywhere来远程管理服务器
  • 图的定义和各种术语总结
  • 关于Recycle.exe病毒的分析
  • activeti user guide 中文_Cool Edit Pro 2.1 简体中文版
  • WinUSB - 微软为所有 USB 设备提供的常规驱动程序
  • WOW装备大全(07.11.30)
  • Ant Design Pro V4下载运行
  • 跨站脚本执行漏洞详解
  • ISO7816nbsp;传输协议nbsp;T0nbsp;T1
  • ByteBuffer的allocate和allocateDirect区别
  • Keil微库 vs 标准C库
  • 42丨深度学习:使用GAN生成手写数字样本
  • RubyOnRails终极部署
  • 开源.net框架的CMS
  • 网页设计零基础教程:快速掌握制作技巧
  • 黑莓手机刷linux,【教程】黑莓手机 BlackBerry DM6.0 完整刷机教程 含瘦身方法...
  • 看懂影片标题,各种电影视频格式标题的含义
  • 语音编程之Speech SDK概述(1)