다크호스 프로그래머네트워크 프로 그래 밍 - 코드 구현
클 라 이언 트
package cn.itcast.b_upload;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
// 1. .
File file = getFile();
System.out.println(file);
// 2. Socket.
Socket socket = new Socket("192.168.10.1", 5000);
// 3. socket .
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// 4. .
out.write(file.getName().getBytes());
// 5. .
byte[] buffer = new byte[1024];
int len;
len = in.read(buffer);
String mess = new String(buffer, 0, len);
// 6. , .
if (" ".equals(mess)) {
System.out.println(mess + ", !!!");
socket.close();
return;
} else {
System.out.println(mess);
}
System.out.println(" !!!");
// 7. . .
FileInputStream fis = new FileInputStream(file);
// 8. .
while ((len = fis.read(buffer)) != -1) {
// 8. socket .
out.write(buffer, 0, len);
}
// 9. , .
socket.shutdownOutput();
// 10. .
len = in.read(buffer);
System.out.println(new String(buffer, 0, len));
// 11. socket .
fis.close();
socket.close();
}
public static File getFile() throws IOException {
// 1. .
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println(" :");
String filePath = br.readLine();
File file = new File(filePath);
// 2. .
if (!file.exists()) {
System.out.println(" , . ");
continue;
}
// 2. .
if (file.isDirectory()) {
System.out.println(" , !!!");
continue;
}
return file;
}
}
}
서버
package cn.itcast.b_upload;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 1. .
System.out.println("tcp . ");
ServerSocket server = new ServerSocket(5000);
while (true) {
// 2. accept .
final Socket socket = server.accept();
new Thread(new Runnable() {
@Override
public void run() {
String ip = socket.getInetAddress().getHostAddress();
System.out.println(" :" + ip + " ..");
try {
// 3. socket .
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
byte[] buffer = new byte[1024 * 8];
int len;
// 4. .
len = in.read(buffer);
String fileName = new String(buffer, 0, len);
// 5. ...
File dir = new File("e:\\upload");
// . , .
if (!dir.exists()) {
dir.mkdir();
}
// 6. , File .
File file = new File(dir, fileName);
// 7. , . .
if (file.exists()) {
out.write(" ".getBytes());
socket.close();
return;
} else {
out.write(" ".getBytes());
}
System.out.println(" ");
// 8. . socket .
FileOutputStream fos = new FileOutputStream(file);
// 9. .
while ((len = in.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
System.out.println(" !!!");
// 10. , .
out.write(" ".getBytes());
// 11. .
fos.close();
} catch (IOException e) {
// e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
// e.printStackTrace();
}
System.out.println(" :" + ip + " ..");
}
}
}).start();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MVC의 심연를 보면 Trygve Reenskaug씨가 고안했다고 쓰여 있다. 뷰에 조작 오브젝트가 있는 경우와, 단순히 키보드나 마우스의 상태를 픽업하는 것을 고려하는 예이다. 그러나 잘 생각하면 이상하다. 예를 들어 키보드에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.