📄 receiveserver.java
字号:
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.util.StringTokenizer;
public class ReceiveServer implements Runnable{
ServerSocket server;
Socket fromClient;
Thread serverThread;
public ReceiveServer(){
try{
server=new ServerSocket(1066);
serverThread=new Thread(this);
serverThread.start();
}catch(Exception e){
System.out.println("Cannot start the thread:"+e);
}
}
public static void main(String args[]){
new ReceiveServer();
}
public void run(){
try{
while(true){
fromClient=server.accept();
Connect con=new Connect(fromClient);
}
}catch(Exception e){
System.out.println("Cannot listen to the Client"+e);
}
}
}
class Connect extends JFrame{
PrintStream streamToClient;
ObjectInputStream streamFromClient;
String message="";
String fileName="";
JFileChooser jFileChooser1;
public Connect(Socket inFromClient){
jFileChooser1 = new JFileChooser();
try{
streamFromClient =new ObjectInputStream(inFromClient.getInputStream());
streamToClient=new PrintStream(inFromClient.getOutputStream());
message=(String)streamFromClient.readObject();
fileName=(String)streamFromClient.readObject();
if(message.equals("sendData")){
int decide=javax.swing.JOptionPane.showConfirmDialog(null,"你收到文件"+fileName);
if(decide==-1||decide==2||decide==1){
streamToClient.println("refuse");
}
if(decide==0){
if (JFileChooser.APPROVE_OPTION == jFileChooser1.showSaveDialog(this)) {
fileName = jFileChooser1.getSelectedFile().getPath();
}
streamToClient.println("accept");
receiveData(fileName);
}
}
} catch(Exception e){
System.out.println("Cannot get the client stream connect" + e);
}
finally{
try{
inFromClient.close();
}catch(IOException e){
}
}
}
public void receiveData(String fileName)throws Exception{
receiver send=new receiver();
send.show();
String fn=fileName;
boolean eof=false;
String msg;
byte [] data=new byte[1024];
File file=new File(fn);
long fileLength=Integer.parseInt((String)streamFromClient.readObject());
JOptionPane.showMessageDialog(this,"你所接收的文件大小为"+fileLength+"字节", "Message", JOptionPane.INFORMATION_MESSAGE);
int i=(int)(fileLength/1024)+1;
RandomAccessFile fileOutput=new RandomAccessFile(file,"rw");
for(int j=0;j<i;j++){
msg=(String)streamFromClient.readObject();
if(msg.equals("send")){
streamFromClient.read(data);
send.set(j);
fileOutput.write(data);
}
else break;
}
fileOutput.close();
send.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -