有两台电脑,我想把一台电脑上的文件拷到另一台上,当中的传输协议要基于HTTP的,谁能给点提示或者示例
程序员文章站
2022-07-13 09:38:10
...
httpServer + httpClient 下面是个简单的示例
在这个基础上改改。
Java code
package com.fzr.learn;
import java.io.BufferedReader;
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 EchoService {
private int port = 8999;
private ServerSocket serverSocket;
public EchoService() throws IOException {
serverSocket = new ServerSocket(port);// 创建tcp服务对象
System.out.println("服务启动");
}
public String echo(String message) {
return "echo : " + message;
}
private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut, true);
}
private BufferedReader getReader(Socket socket) throws IOException {
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
public void service() {
while (true) {
Socket socket = null;
System.out.println("11");
try {
socket = serverSocket.accept();
System.out.println("new connection accepted "
+ socket.getInetAddress() + ":" + socket.getPort());
System.out.println(socket);
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
String message = null;
System.out.println("22");
while((message=br.readLine())!=null){
System.out.println("33");
System.out.println(message);
pw.println(echo(message));
if(message.equals("bye")){
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(socket!=null){
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws IOException {
new EchoService().service();
System.out.println("aa");
}
}
Java code
package com.fzr.learn;
import java.io.BufferedReader;
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 EchoClient {
private String host = "localhost";
private int port = 8999;
private Socket socket ;
public EchoClient () throws UnknownHostException, IOException{
socket = new Socket (host,port);
}
private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut, true);
}
private BufferedReader getReader(Socket socket) throws IOException {
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
public void talk(){
try {
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
String message =null ;
while((message=localReader.readLine())!=null){
pw.println(message);
System.out.println(br.readLine());
if(message.equals("bye")){
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws UnknownHostException, IOException {
new EchoClient().talk();
}
}
楼上的,你是通过TCP传输的。。。。
有啊。以下代码是用HttpClient去Get一个你要下载的文件:http://www.mysite.com/download.tar.gz
Java code
public class MyHttpClientGetFile {
public static String url =
"http://www.mysite.com/download.tar.gz";
public static void main(String[] args){
//创建HttpClient
HttpClient httpClient = new HttpClient();
//创建 method instance
GetMethod getMethod = new GetMethod(url);
try{
//执行Get方法
int statusCode =
httpClient.executeMethod(getMethod);
//读取响应。
InputStream in =
getMethod.getResponseBodyAsStream();
byte[] b = new byte[1024];//1K缓冲区读
int len;
while ((len = in.read(b)) != -1) {
//将数据写到。。。。 System.out
//你可改为:存到文件中。
for(int i = 0; i < len; i++){
System.out.print((char)b[i]);
}
}
in.close();
}catch(HttpException e1){
//System.out.println(e1);
}catch(IOException e2){
//System.out.println(e2);
}finally{
//释放连接
getMethod.releaseConnection();
}
}
}
非常谢谢,你这个是下载,我想要的是上传的。
需求是这样的:客户端选择本地文件,然后点击上传。当然中间是通过HTTP上传
转自:http://bbs.csdn.net/topics/310108970
在这个基础上改改。
Java code
package com.fzr.learn;
import java.io.BufferedReader;
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 EchoService {
private int port = 8999;
private ServerSocket serverSocket;
public EchoService() throws IOException {
serverSocket = new ServerSocket(port);// 创建tcp服务对象
System.out.println("服务启动");
}
public String echo(String message) {
return "echo : " + message;
}
private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut, true);
}
private BufferedReader getReader(Socket socket) throws IOException {
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
public void service() {
while (true) {
Socket socket = null;
System.out.println("11");
try {
socket = serverSocket.accept();
System.out.println("new connection accepted "
+ socket.getInetAddress() + ":" + socket.getPort());
System.out.println(socket);
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
String message = null;
System.out.println("22");
while((message=br.readLine())!=null){
System.out.println("33");
System.out.println(message);
pw.println(echo(message));
if(message.equals("bye")){
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(socket!=null){
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws IOException {
new EchoService().service();
System.out.println("aa");
}
}
Java code
package com.fzr.learn;
import java.io.BufferedReader;
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 EchoClient {
private String host = "localhost";
private int port = 8999;
private Socket socket ;
public EchoClient () throws UnknownHostException, IOException{
socket = new Socket (host,port);
}
private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut, true);
}
private BufferedReader getReader(Socket socket) throws IOException {
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
public void talk(){
try {
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
String message =null ;
while((message=localReader.readLine())!=null){
pw.println(message);
System.out.println(br.readLine());
if(message.equals("bye")){
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws UnknownHostException, IOException {
new EchoClient().talk();
}
}
楼上的,你是通过TCP传输的。。。。
有啊。以下代码是用HttpClient去Get一个你要下载的文件:http://www.mysite.com/download.tar.gz
Java code
public class MyHttpClientGetFile {
public static String url =
"http://www.mysite.com/download.tar.gz";
public static void main(String[] args){
//创建HttpClient
HttpClient httpClient = new HttpClient();
//创建 method instance
GetMethod getMethod = new GetMethod(url);
try{
//执行Get方法
int statusCode =
httpClient.executeMethod(getMethod);
//读取响应。
InputStream in =
getMethod.getResponseBodyAsStream();
byte[] b = new byte[1024];//1K缓冲区读
int len;
while ((len = in.read(b)) != -1) {
//将数据写到。。。。 System.out
//你可改为:存到文件中。
for(int i = 0; i < len; i++){
System.out.print((char)b[i]);
}
}
in.close();
}catch(HttpException e1){
//System.out.println(e1);
}catch(IOException e2){
//System.out.println(e2);
}finally{
//释放连接
getMethod.releaseConnection();
}
}
}
非常谢谢,你这个是下载,我想要的是上传的。
需求是这样的:客户端选择本地文件,然后点击上传。当然中间是通过HTTP上传
转自:http://bbs.csdn.net/topics/310108970
上一篇: HTTP 请求消息的结构
下一篇: socket和http间的区别2