客户端
package socketserver3;
import java.io.*;
import java.net.Socket;
public class SocketDemo {
public static void main(String[] args) throws IOException {
// 创建客户端
Socket socket = new Socket("127.0.0.1",10000);
// 使用本地字节流,读取本地文件
BufferedInputStream bis =new BufferedInputStream(new FileInputStream("D:\\csdn\\1.png"));
// 使用网络字节流写到服务器
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
byte[] bytes = new byte[1024*8];
int len;
while ((len = bis.read(bytes))!=-1){
bos.write(len);
}
bos.flush();
// 给服务器发送一个结束标记
socket.shutdownOutput();
// 使用字符缓冲流读取网络中的字符数据
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String lien;
while ((lien=br.readLine())!=null){
System.out.println(lien);
}
socket.close();
bis.close();
}
}
服务器
package socketserver3;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
// 创建服务器
ServerSocket ss = new ServerSocket(10000);
// 监听客户端请求
Socket accept = ss.accept();
// 使用网络字节流接受客户端传输的数据
BufferedInputStream bis = new BufferedInputStream(accept.getInputStream());
// 使用本地字节流将数据写到本地文件夹
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\1\\1.png"));
int len;
while ((len = bis.read())!=-1){
bos.write(len);
}
bos.flush();
// 使用网络字符流传输数据
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(accept.getOutputStream()));
bw.write("上传成功");
bw.newLine();
bw.flush();
// 结束标记
accept.shutdownOutput();
bos.close();
accept.close();
ss.close();
}
}