A simple Java program which implement remote file transmit (Multi-thread)
2014-11-14 12:43
351 查看
package com.Toxic.iFile;
import java.io.*;
import java.net.*;
public
class RemoteFileClient {
protected BufferedInputStream socketReader;
protected PrintWriter socketWriter;
protected String hostIp;
protected int hostPort;
public RemoteFileClient(String hostIp, int hostPort) {
this.hostIp = hostIp;
this.hostPort=hostPort;
}
public String getFile(String fileNameToGet) {
StringBuffer fileLines =
new StringBuffer();
try {
socketWriter.println(fileNameToGet);
socketWriter.flush();
File file =
new File("/Users/Toxic/Desktop/new.mp4");
/* receive path and file name*/
BufferedOutputStream fout =
new BufferedOutputStream(new FileOutputStream(file));
int read;
while((read = socketReader.read())!= -1) {
fout.write(read);
}
fout.close();
}
catch(IOException e) {
System.out.println("Error reading from file: "+fileNameToGet);
}
return fileLines.toString();
}
public void setUpConnection() {
try {
Socket client =
new Socket(hostIp,hostPort);
socketReader = new BufferedInputStream(client.getInputStream());
socketWriter = new PrintWriter(client.getOutputStream());
}
catch(UnknownHostException e) {
System.out.println("Error1 setting up socket connection: unknown host at "+hostIp+":"+hostPort);
}
catch(IOException e) {
System.out.println("Error2 setting up socket connection: "+e);
}
}
public void tearDownConnection() {
try {
socketWriter.close();
socketReader.close();
}catch(IOException e) {
System.out.println("Error tearing down socket connection: "+e);
}
}
public static void main(String args[])
throws IOException {
RemoteFileClient remoteFileClient =
new RemoteFileClient("127.0.0.1",8001);
/* Ip address & port to get connection to server */
remoteFileClient.setUpConnection();
StringBuffer fileContents =
new StringBuffer();
fileContents.append(remoteFileClient.getFile("/Users/Toxic/Desktop/-.mp4"));
/* path and file name to get file from server*/
}
}
/**
* MultithreadRemoteFileServer.java
* Toxic 2011.05.26
*
*/
package com.Toxic.iFile;
import java.io.*;
import java.net.*;
public
class MultithreadRemoteFileServer {
int
listenPort;
public MultithreadRemoteFileServer(int listenPort) {
this.listenPort = listenPort;
}
public
void acceptConnections() {
try {
ServerSocket server =
new ServerSocket(listenPort, 5);
Socket incomingConnection =
null;
while(true) {
incomingConnection = server.accept();
handleConnection(incomingConnection);
}
}
catch(BindException e) {
System.out.println("Unable to bind to port " +
listenPort);
}
catch(IOException e) {
System.out.println("Unable to instatiate a ServerSocket on port: " +
listenPort);
}
}
public
void handleConnection(Socket connectionToHandle) {
new Thread(new ConnectionHandler(connectionToHandle)).start();
}
public
static void main(String args[]) {
MultithreadRemoteFileServer server =
new MultithreadRemoteFileServer(8001);
/* server port to provide service*/
server.acceptConnections();
}
}
/**
* ConnectionHandler.java
* Toxic 2011.05.26
*
*/
package com.Toxic.iFile;
import java.io.*;
import java.net.*;
public
class ConnectionHandler implements Runnable {
protected Socket
socketToHandle;
public ConnectionHandler(Socket socketToHandle) {
this.socketToHandle = socketToHandle;
}
public
void run() {
try {
BufferedOutputStream streamWriter =
new BufferedOutputStream(socketToHandle.getOutputStream());
BufferedReader streamReader =
new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));
String fileToRead = streamReader.readLine();
BufferedInputStream fileReader =
new BufferedInputStream(new FileInputStream(fileToRead));
int read;
while((read = fileReader.read())!= -1) {
streamWriter.write(read);
}
fileReader.close();
streamWriter.close();
streamReader.close();
}
catch(Exception e) {
System.out.println("Error handling a client: " + e);
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public
class RemoteFileClient {
protected BufferedInputStream socketReader;
protected PrintWriter socketWriter;
protected String hostIp;
protected int hostPort;
public RemoteFileClient(String hostIp, int hostPort) {
this.hostIp = hostIp;
this.hostPort=hostPort;
}
public String getFile(String fileNameToGet) {
StringBuffer fileLines =
new StringBuffer();
try {
socketWriter.println(fileNameToGet);
socketWriter.flush();
File file =
new File("/Users/Toxic/Desktop/new.mp4");
/* receive path and file name*/
BufferedOutputStream fout =
new BufferedOutputStream(new FileOutputStream(file));
int read;
while((read = socketReader.read())!= -1) {
fout.write(read);
}
fout.close();
}
catch(IOException e) {
System.out.println("Error reading from file: "+fileNameToGet);
}
return fileLines.toString();
}
public void setUpConnection() {
try {
Socket client =
new Socket(hostIp,hostPort);
socketReader = new BufferedInputStream(client.getInputStream());
socketWriter = new PrintWriter(client.getOutputStream());
}
catch(UnknownHostException e) {
System.out.println("Error1 setting up socket connection: unknown host at "+hostIp+":"+hostPort);
}
catch(IOException e) {
System.out.println("Error2 setting up socket connection: "+e);
}
}
public void tearDownConnection() {
try {
socketWriter.close();
socketReader.close();
}catch(IOException e) {
System.out.println("Error tearing down socket connection: "+e);
}
}
public static void main(String args[])
throws IOException {
RemoteFileClient remoteFileClient =
new RemoteFileClient("127.0.0.1",8001);
/* Ip address & port to get connection to server */
remoteFileClient.setUpConnection();
StringBuffer fileContents =
new StringBuffer();
fileContents.append(remoteFileClient.getFile("/Users/Toxic/Desktop/-.mp4"));
/* path and file name to get file from server*/
}
}
/**
* MultithreadRemoteFileServer.java
* Toxic 2011.05.26
*
*/
package com.Toxic.iFile;
import java.io.*;
import java.net.*;
public
class MultithreadRemoteFileServer {
int
listenPort;
public MultithreadRemoteFileServer(int listenPort) {
this.listenPort = listenPort;
}
public
void acceptConnections() {
try {
ServerSocket server =
new ServerSocket(listenPort, 5);
Socket incomingConnection =
null;
while(true) {
incomingConnection = server.accept();
handleConnection(incomingConnection);
}
}
catch(BindException e) {
System.out.println("Unable to bind to port " +
listenPort);
}
catch(IOException e) {
System.out.println("Unable to instatiate a ServerSocket on port: " +
listenPort);
}
}
public
void handleConnection(Socket connectionToHandle) {
new Thread(new ConnectionHandler(connectionToHandle)).start();
}
public
static void main(String args[]) {
MultithreadRemoteFileServer server =
new MultithreadRemoteFileServer(8001);
/* server port to provide service*/
server.acceptConnections();
}
}
/**
* ConnectionHandler.java
* Toxic 2011.05.26
*
*/
package com.Toxic.iFile;
import java.io.*;
import java.net.*;
public
class ConnectionHandler implements Runnable {
protected Socket
socketToHandle;
public ConnectionHandler(Socket socketToHandle) {
this.socketToHandle = socketToHandle;
}
public
void run() {
try {
BufferedOutputStream streamWriter =
new BufferedOutputStream(socketToHandle.getOutputStream());
BufferedReader streamReader =
new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));
String fileToRead = streamReader.readLine();
BufferedInputStream fileReader =
new BufferedInputStream(new FileInputStream(fileToRead));
int read;
while((read = fileReader.read())!= -1) {
streamWriter.write(read);
}
fileReader.close();
streamWriter.close();
streamReader.close();
}
catch(Exception e) {
System.out.println("Error handling a client: " + e);
e.printStackTrace();
}
}
}
相关文章推荐
- Demo Java 2 method to implement Multi-Thread
- Exploit FFmpeg Libraries to Decode Raw H264 File in Windows, Which Supports Multithread-Decoding
- A common Ant file format for simple java project
- blackberry 模拟器 上网设置(Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file)
- Unable to load configuration. - bean - jar:file:/D:/javaProgramFiles/tomcat-6.0.20/webapps/zoyeo
- java.io.IOException - Cannot run program "git": java.io.IOException: error=2, No such file or direct
- java simple check whether a file or directory.
- Java Thread Programming 1.2 - A Simple Two-Thread Example
- spark运行java-jar:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
- 解决:Error launching remote program: No such file or directory
- gdb with multithread program
- How to compile and run a simple java file in jenkins on Windows
- Error: Password file read access must be restricted: C:/Java/jdk1.6.0_14/jre/lib/management/jmxremote.password
- Exception in thread "main" java.io.IOException: Cannot run program "XX": CreateP
- Exception in thread "main" java.io.IOException: Cannot run program "XX": CreateProcess error
- Exception in thread "main" java.io.IOException: Cannot run program "chmod": CreateProcess error=2
- Simple of Async of Multithread
- Exception in thread "main" java.io.IOException: Cannot run program "XX": CreateProcess error
- iPhone真机调试报错 Error launching remote program: No such file or directory
- Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file