文件传输问题

huangxiaoke2000 2005-07-28 10:48:15
我看了一些Java写的文件传输的类
它们都是服务器发送文件
客户端接受文件的
可是我觉的大部分都是客户有了信息
才连接到服务器上来啊
服务器只是一直在侦听,也就是说被动连接的啊
因为客户端有东西发了
才连接上来
然后让服务器接受的啊
我搞糊涂了。
因为我现在的东西就是服务器一直在侦听
然后客户有了文件
就连接上来
将文件发给了服务器
服务器就保存文件到指定的目录下面。
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuehaipiaoxiang628 2006-01-07
  • 打赏
  • 举报
回复
咱们慢慢学习吧
我再整个多线程的
//客户端
import java.io.*;
import java.net.*;

public class SocketClient {

public static void main(String[] args) {
try {
Socket echoClient = new Socket("localhost", 3333);
//creat a new socket connected to host and port 3333
PrintWriter out = new PrintWriter(echoClient.getOutputStream(), true);

BufferedReader in = new BufferedReader(
new InputStreamReader(echoClient.getInputStream()));
String fromServer, fromUser;
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
//gets the system input stream and opens a BufferedReader on it
while ( (fromUser = stdIn.readLine()) != null) {
if (fromUser.equals("end")) {
break;
}
//when user types "bye" then end

System.out.println(fromUser);
out.println(fromUser);

fromServer = in.readLine();
System.out.println(fromServer);
}
out.close();
in.close();
echoClient.close();
}
catch (UnknownHostException e) {
System.err.println(e.toString());
System.exit(1);
}
catch (IOException e) {
System.err.println("" + e.getMessage());
System.exit(1);
}
}
}
//服务器端
import java.io.*;
import java.net.*;

class ServerThread
extends Thread {
private Socket echoClient = null;
public ServerThread(Socket socket) {
super("Thread1");
this.echoClient = socket;
}

public void run() {
try {
PrintWriter out = new PrintWriter(echoClient.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(echoClient.getInputStream()));
String strFromClient;
while ( (strFromClient = in.readLine()) != null) {
out.println("FromServer" + strFromClient);
System.out.println("FromServer" + strFromClient);
}
out.close();
in.close();
echoClient.close();
}
catch (IOException e) {
System.err.println(e.getMessage());
System.exit( -1);
}
}
}

public class SocketiServerThread {
public static void main(String[] args) throws IOException {
ServerSocket echoServer = null;
boolean listening = true;

try {
echoServer = new ServerSocket(3333);
}
catch (IOException e) {
System.err.println("Error: Couldn't listen on port:3333."");
System.exit( -1);
}
while (listening) {
new ServerThread(echoServer.accept()).start();
}

echoServer.close();
}
}
congliu 2005-09-24
  • 打赏
  • 举报
回复
来迟了,支持laughsmile(海边的星空)
littlesia 2005-09-24
  • 打赏
  • 举报
回复
顶一个!谢谢了
hifan 2005-07-29
  • 打赏
  • 举报
回复
。。。

我也想做一个 发送文件的~
以前做过聊天的,文件不知道怎么做???
huangdeji 2005-07-29
  • 打赏
  • 举报
回复
学习 + 接分
laughsmile 2005-07-29
  • 打赏
  • 举报
回复
客户端:
java.net.Socket clientSocket = new java.net.Socket(服务器ip, 服务器端口);
DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
DataInputStream fileReader = new DataInputStream(new FileInputStream(文件路径 + 文件名));
try {
byte[] chrBuffer = new byte[4096]; //缓冲
int tmpLen;
while ((tmpLen = fileReader.read(chrBuffer)) != -1) {
out.write(chrBuffer, 0, tmpLen);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
clientSocket.close();
out.flush();
out.close();
fileReader.close();
}

服务端:
java.net.ServerSocket serverSocket = null;
DataInputStream in = null;
DataOutputStream out = null;
Socket client = null;
try {
byte[] chrBuffer = new byte[4096]; //缓冲
serverSocket = new java.net.ServerSocket(服务器端口);
client = serverSocket.accept();
in = new DataInputStream(client.getInputStream());
out = new DataOutputStream(new FileOutputStream(文件路径 + 文件名));
int tmpLen;
while ((tmpLen = in.read(chrBuffer)) != -1) {
out.write(chrBuffer, 0, tmpLen);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
serverSocket.close();
client.close();
in.close();
shxchenwind 2005-07-28
  • 打赏
  • 举报
回复

你好像没有提问题啊!!!!

搞清io操作和网络变成就行了.
事实上java的网络程序没有listen,隐藏在accept里了

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧