需求描述:在客户端获取远程服务器某文件的内容
客户端程序如下:
package com.socket.clientsocket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Sclient {
/**
* @param args
*/
protected BufferedReader socketReader;
protected PrintWriter socketWriter;
protected String hostIp;
protected int hostPort;
public Sclient(String ahostIp,int ahostPort){
this.hostIp = ahostIp;
this.hostPort = ahostPort;
}
public void setUpConnection(){
try {
//1.创建Socket,建立连接
Socket socket = new Socket(hostIp,hostPort);
//2.获取输入流和输出流,并进行封装
socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
socketWriter = new PrintWriter(socket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void tearDownConnection(){
try {
socketReader.close();
socketWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//根据需求,对流进行处理
public String getFile(String fileNameToGet){
StringBuffer sb = new StringBuffer();
socketWriter.println(fileNameToGet);
socketWriter.flush();
String line = null;
try {
while((line = socketReader.readLine()) != null){
sb = sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
public static void main(String[] args) {
//创建客户端
Sclient client = new Sclient("198.27.0.166",8200);
//建立连接
client.setUpConnection();
//需求操作
String content = client.getFile("c:\\log.txt");
//关闭连接
client.tearDownConnection();
}
}
服务器端的程序如下:
package com.socket.serversocket;
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 Sserver {
public static void main(String[] args){
//创建服务器端
Sserver s = new Sserver(3000);
//监听连接
s.acceptConnections();
}
int listenPort;
public Sserver(int alistenPort){
this.listenPort = alistenPort;
}
public void acceptConnections(){
try {
ServerSocket server = new ServerSocket(listenPort);
Socket incomingConnection = null;
while (true) {
incomingConnection = server.accept();
handleConnection(incomingConnection);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void handleConnection(Socket incomingConnection){
try {
//获取输入流跟输出流,并进行封装
InputStream inputFromSocket = incomingConnection.getInputStream();
OutputStream outputToSocket = incomingConnection.getOutputStream();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket));
//接收客户端讯息
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);
}
streamReader.close();
fileReader.close();
streamWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
"模块一_Socket编程.doc"可能是一个详细的讲解文档,涵盖了Socket编程的基础概念、API用法、网络模型(如TCP/IP)以及可能的编程实例。这份文档可能会引导读者了解如何创建Socket,进行连接,发送和接收数据,以及...
本资源“实战linux socket编程--示例源码.rar”包含了一系列的C++ Socket编程实例,旨在帮助开发者深入理解和掌握Socket编程技术。 1. **Socket基本概念** - Socket是网络通信中的一个抽象概念,可以理解为两个...
计算机网络实验中的SOCKET编程是网络通信领域的重要学习内容,特别是在构建WEB服务器时,SOCKET接口扮演着核心角色。本实验以C#语言为开发工具,深入探讨如何使用SOCKET实现一个简单的WEB服务器。 首先,我们需要...
总之,这个C#的Socket编程实例展示了如何构建一个简单的聊天应用程序,涉及了Socket的基本操作,包括连接、监听、发送和接收数据。通过理解和实践这个示例,开发者可以深入理解网络编程的基础,并为开发更复杂的网络...
Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,编程实例Socket,...
在IT领域,Socket编程是一种基础且重要的技术,它允许应用程序通过网络进行通信。IBM提供了专业的教程来帮助开发者理解和掌握Socket编程的基本概念和实践技巧。本篇将深入探讨Socket编程的核心知识点,以及IBM教程中...
在IT领域,网络通信是不可或缺的一部分,而C++作为强大的编程语言,提供了丰富的库支持进行网络编程,其中就包括了socket编程。本篇将详细探讨C++中的socket编程,主要聚焦于TCP和UDP两种传输协议的实现。 首先,...
在标题中提到的"C#实例 socket SOCKET编程实例_c# socket 实例_c# socket",就是指使用C#语言实现Socket通信的各种示例代码。 1. **基本概念**: - **Socket类型**:C#中的Socket类有两种主要类型,即TCP...
在Android平台上进行网络通信时,Socket编程是一种常见...总之,Android Socket编程实例涵盖了网络通信的基础知识,包括建立连接、传输数据和管理连接等。理解并掌握这些知识,将有助于你构建功能完善的网络通信应用。
### C#中的Socket编程实例——聊天程序 这个实例是基于客户端-服务器(C/S)架构的,包括服务器端和客户端两部分。服务器端负责监听和管理连接,客户端则用于交互。 #### 服务器端程序 1. 使用Visual Studio创建...
### TCL Socket 编程实例详解 #### 一、TCL Socket 概述 TCL(Tool Command Language)是一种脚本语言,广泛应用于快速原型开发、脚本编程等场景。TCL支持网络通信功能,其中最重要的一项是Socket编程,用于创建...
总之,C++ Socket编程实例为我们展示了如何在C++中建立网络通信,它包括了服务器的监听、连接处理和数据交换,以及客户端的连接、数据发送和接收。通过学习和实践这些基本概念,开发者可以创建自己的网络应用,如...
【SOCKET实例详解:服务器端与...这种基础的Socket编程模型可以作为进一步开发复杂网络应用的基础,如聊天室、文件传输等。在实际应用中,还需要考虑错误处理、多线程、并发连接等问题,以提高程序的稳定性和效率。
本教程将深入探讨Java中的Socket编程,特别是如何实现网上广播功能。网上广播允许一个设备向网络上的所有设备发送数据,无需预先知道接收者的具体地址。 首先,让我们了解什么是Socket。Socket在计算机网络中是一种...
android socket编程实例
总之,Socket高级编程实例是一个非常有价值的资源,它可以帮助学习者巩固理论知识,提升实战技能,为成为专业的网络程序员奠定坚实基础。在学习过程中,不断实践和调试代码,理解网络通信的本质,将使你在网络编程...
在这个"基于TCP的socket编程实例"中,我们将深入探讨如何使用socket API进行TCP通信,并通过"main"这个程序文件来理解其实现过程。 首先,TCP socket编程主要包括服务器端和客户端两部分。服务器端需要先启动,监听...
### C# Socket编程实例详解 #### 一、引言 Socket 编程是网络通信的基础技术之一,在 C# 中可以通过 System.Net.Sockets 命名空间提供的类来实现。本篇文章将通过一个具体的 C# Socket 编程实例来详细介绍 Socket ...
本篇将深入探讨C# Socket编程实例,特别是通过“飞鸽传书”这个案例,我们将会学习如何使用C#构建一个简单的文件传输应用。 首先,让我们了解Socket的基本概念。Socket是操作系统提供的接口,用于在两台计算机之间...
Netty 提供了一个高级的API,使得Socket编程更加简单,同时提高了性能和可扩展性。 1. **Netty服务端的创建**: - 首先,我们需要创建一个`ServerBootstrap`实例,它是Netty服务器的启动类。 - 接着,通过`group...