socket简单编程01(客户端向服务器发送文件,服务器接收到后回复客户端)
package file.input.work;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class StreamUtils {
public static byte[] streamTobyteArray(InputStream inputStream) throws IOException
{
byte[] buff = new byte[1024];
ByteArrayOutputStream boStream = new ByteArrayOutputStream();
int len;
while((len=inputStream.read(buff))!=-1)
{
boStream.write(buff, 0, len);
}
byte[] bs = boStream.toByteArray();
boStream.close();
return bs;
}
public static String streamToString(InputStream in) throws IOException
{
StringBuilder sBuilder = new StringBuilder();
InputStreamReader iReader = new InputStreamReader(in);
BufferedReader bReader = new BufferedReader(iReader);
String line;
while((line=bReader.readLine())!=null)
{
sBuilder.append(line+"\r\n");
}
return sBuilder.toString();
}
}
package file.input.work;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTwo {
public static void main(String[] args) throws IOException {
System.out.println("服务器端准备就绪。。。。");
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
System.out.println("服务器端连接成功");
BufferedInputStream bInputStream = new BufferedInputStream(socket.getInputStream());
byte[] bs = StreamUtils.streamTobyteArray(bInputStream);
String path = "C:\\Users\\美力姐姐\\Pictures\\q.jpg";
File file = new File(path);
BufferedOutputStream bOutputStream = new BufferedOutputStream(new FileOutputStream(file));
bOutputStream.write(bs);
bOutputStream.flush();
System.out.println("图片上传完成");
bOutputStream.close();
OutputStream oStream = socket.getOutputStream();
OutputStreamWriter oWriter = new OutputStreamWriter(oStream);
BufferedWriter bWriter = new BufferedWriter(oWriter);
bWriter.write("客户端你已经上传完成");
bWriter.newLine();
bWriter.close();
oStream.close();
bInputStream.close();
socket.close();
serverSocket.close();
}
}
package file.input.work;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientTow {
public static void main(String[] args) throws IOException, IOException {
Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
byte[] buff = new byte[1024];
String path = "C:\\Users\\Pictures\\hg.jpg";
File file = new File(path);
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bInputStream = new BufferedInputStream(fileInputStream);
byte[] byteArray = StreamUtils.streamTobyteArray(bInputStream);
InputStream iStream = socket.getInputStream();
BufferedOutputStream bOutputStream = new BufferedOutputStream(socket.getOutputStream());
bOutputStream.write(byteArray);
bOutputStream.flush();
System.out.println("上传完成");
bInputStream.close();
socket.shutdownInput();
String s = StreamUtils.streamToString(iStream);
System.out.println(s);
iStream.close();
bOutputStream.close();
socket.close();
}
}