`

远程访问 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. 建立...

    Win10可用的Microsoft SQL Server 2008 Native Client

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

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

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

    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