例如:客户端将d:\1.jpg图片文件上传给服务端,服务端收到后保存到d:\java\a.jpg,服务器端接收完成后,发送"上传成功"回应客户端
。
一:客户端实现
package Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Sockets {
public static void main(String []args) {
String ip="192.168.43.134";
int port=1758;
File file=new File("D:\\1.jpg");
try {
Socket socket=new Socket(ip,port);
FileInputStream ins=new FileInputStream(file);
OutputStream out=socket.getOutputStream();
byte []b=new byte[(int) (file.length()+10)];
int index=0;
while((index=ins.read(b))!=-1) {
out.write(b);
}
socket.close();
ins.close();
out.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二:服务端实现:
package Test;
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;
import java.net.SocketAddress;
public class Sever {
public static void main(String []args) {
int port=1758;
File file=new File("D:\\java\\a.jpg");
try {
ServerSocket sever=new ServerSocket(port);
Socket socket=sever.accept();
InputStream in=socket.getInputStream();
FileOutputStream outs=new FileOutputStream(file);
byte []b=new byte[1024];
int index=0;
while((index=in.read(b))!=-1) {
outs.write(b,0,index);
}
System.out.println("上传成功");
sever.close();
socket.close();
in.close();
outs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果在cmd命令窗口之间运行上面代码会出现这个错误:
所以要将保存的Sockets和Sever中的:package Test;
去掉
如图所示:
进行上面的修改之后:如果之前还没有配置关于java的环境变量,可以访问这篇博文:https://mydreamambitious.blog.csdn.net/article/details/114886946
完成环境变量的配置之后就是到cmd
命令窗口中运行:
1.首先打开一个cmd
,其中完成Sockets
(客户端)的编译,记住这个时候不要运行,因为服务端还没有运行起来。
2.运行服务端,还是到cmd
命令中:编译Sever
和运行Sever
具体过程如下:
完成Sockets
的编译:
完成编译Sever
和运行Sever
:
可以看到运行之后不会有任何的显示,这个时候需要运行客户端:
左边是Sockets
(客户端)和右边Sever
(服务端)运行的情况。
以上是自己在学习中总结出来的,如果其中存在什么问题,望指教,谢谢!