`

远程访问 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);
remoteFileClient.setUpConnection();
String fileContents = remoteFileClient.getFile("c:\\RemoteFile.txt");
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);
//把/Socket的OutputStream包装进PrintWriter 以使我们能够发送文件请求到服务器
}
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)
    {//&://不/断监听直到来了一个连接请求,然后交由handleConnection处理

    try {
[color=red]incomingConnection = server.accept();[/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));
//只是获取client发送的一个文件名称,接收并且将文件的内容显示出来
    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();
}

}
分享到:
评论

相关推荐

    SQL Server 2005 远程访问

    ### SQL Server 2005 远程访问配置详解 #### 一、概述 SQL Server 2005 是一款广泛使用的数据库管理系统,它提供了强大的数据处理能力以及丰富的功能特性。然而,默认情况下,SQL Server 2005 的配置并不支持远程...

    SQL Server Native Client 10.0

    SQL Server Native Client 10.0 是微软为SQL Server 2008和2008 R2设计的一个数据库访问接口,它集成了ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)接口。在SQL Server ...

    c# udp server and client

    在C#中实现UDP服务器和客户端,我们可以利用System.Net.Sockets命名空间中的UdpClient和UdpServer类。下面我们将深入探讨C# UDP服务器和客户端的实现以及在Windows Mobile设备上的应用。 一、C# UDP服务器 1. 建立...

    Microsoft SQL Server 2012 Native Client 官方安装版 64bit

    Microsoft SQL Server 2012 Native Client是微软为数据库开发者和系统管理员提供的一种数据访问组件。它是SQL Server的一个重要组成部分,主要用于在客户端应用程序与SQL Server之间建立连接,支持ODBC(Open ...

    Win10可用的Microsoft SQL Server 2008 Native Client

    在本场景中,"Navicat"被提及,这是一个流行的数据管理工具,用户可以使用它通过SQL Server 2008 Native Client来远程或本地管理SQL Server数据库。 SQL Server 2008 Native Client包含了以下关键特性: 1. **ODBC...

    VNC 4.0 (Client and Server)

    VNC客户端主要由两个部分组成:VNC Server及VNC Viewer。VNC允许您访问和控制您的桌面应用程序,你可以用Windows电脑控制Linux系统或苹果的Mac OS,反之亦同。

    Win10可用的Microsoft SQL Server 2008 Native Client.zip

    它包含了所需的ODBC(Open Database Connectivity)驱动程序和OLE DB(Object Linking and Embedding, Database)提供程序,使得应用程序能够通过标准接口访问SQL Server。 描述中提到的问题是“Navicat Premium 在...

    x-server and x-client

    这意味着X-Client可以在不同的机器上运行,只要能够访问到运行X-Server的主机即可。 2. **显示协议**:X-Server负责处理图形显示,而X-Client则负责用户输入。两者之间的交互遵循特定的显示协议,确保数据传输的准确...

    svn-client-and-server

    以下是对"svn-client-and-server"的详细解释: 1. **SVN客户端**: SVN客户端是开发人员用来与SVN服务器交互的工具,它允许用户查看、检查、更新、提交文件和目录。常见的客户端有TortoiseSVN,它是一个图形化界面...

    cwRsync4.2.0 server and client

    配置 `cwRsync Server` 可以设置访问控制、日志记录、安全策略等,确保只有授权的客户端可以进行文件同步。 **六、安装与使用** 压缩包中的 `cwRsyncServer_4.0.6_Installer.exe` 和 `cwRsyncServer_4.2.0_...

    Client-and-server-communication.rar_Server-Client

    在这个架构中,"客户端"通常是指用户使用的设备或软件(如浏览器、移动应用),而"服务器"则是运行在远程计算机上,为客户端提供服务的程序。 在客户端-服务器通信中,主要涉及以下几个核心知识点: 1. **TCP/IP...

    FileZilla_ServerAndClient.zip

    FileZilla是一款非常流行的开源FTP(文件传输协议)软件,它包括两个主要组件:FileZilla Server和FileZilla Client。这款软件因其易用性、可靠性和安全性在IT行业中备受推崇,尤其对于需要进行文件传输的用户来说是...

    tftp-1.0.rar_tftp_tftp client_tftp server

    该资源的描述“Simple tftp client and server source”揭示了其主要内容:一个简单的TFTP客户端和服务器的源代码。这为开发者提供了学习和自定义TFTP实现的机会。通过分析和理解这些源代码,我们可以掌握TFTP协议的...

    OPC Alarm and Event Client Toolkit

    - **DCOM 支持**:对于需要跨计算机访问的情况,工具包支持 DCOM (Distributed COM) 技术,使得远程访问成为可能。 #### 八、术语表 文档中还提供了一个术语表,帮助开发者理解相关的专业词汇,这对于初次接触 OPC ...

    OPC client

    - 远程监控:允许用户通过网络远程访问和控制设备。 4. 使用OPC Client的步骤: - 选择合适的OPC Client软件:市面上有多种商业和开源的OPC Client软件,根据需求选择。 - 配置OPC Client:设置连接参数,如OPC ...

    和利时 OPC Server 通讯软件

    OPC Server是OPC技术的关键组件,它作为数据服务器,允许不同的应用程序通过OPC接口访问和操作DCS的数据。和利时OPC Server遵循OPC 2.0接口标准,这意味着它具有更高的稳定性和兼容性,可以与符合该标准的各类客户端...

    OpcClient2010.rar

    1. **OPC基础**:OPC标准包括了OPC DA(Data Access)、OPC HDA(Historical Data Access)、OPC AE(Alarms and Events)等部分,分别处理实时数据访问、历史数据访问和事件报警。OPC Client通常使用这些接口来获取...

    CentOS 8 安装 MySql并设置允许远程连接的方法

    本教程将详细讲解如何在CentOS 8上安装MySQL并配置允许远程访问。 首先,安装MySQL前需要确保系统中没有已存在的MySQL或MariaDB实例。你可以通过以下命令检查: ```bash rpm -qa | grep mysql rpm -qa | grep ...

    Oracle client and Plsql(64bit).rar

    3. **Database Gateway**:允许PL/SQL代码访问其他类型的数据库,如SQL Server或DB2,实现异构数据库环境的互操作性。 使用64位的Oracle客户端和PL/SQL工具,开发人员和管理员可以更有效地处理大数据量,执行复杂的...

    Citrix+Presentation+Server

    它允许用户通过网络访问位于远程服务器上的应用程序,而无需在用户的计算机上安装这些应用程序。通过集中管理和部署应用程序,企业可以提高工作效率、降低维护成本并增强安全性。 #### 二、安装前的准备工作 在安装...

Global site tag (gtag.js) - Google Analytics