Java网络编程:Socket 通信 2
client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
文件传输:
客户端:
-
创建Socket连接对象:创建它对应的对接的iP和端口。。。
-
创建一个输出流
-
传入文件需要文件流:读取文件 写出文件
-
通知 服务器我传输完成
-
接受服务器发过来的
- 关闭资源
1 package Demo1.JavaSe.javasocket; 2 3 import java.io.*; 4 import java.net.InetAddress; 5 import java.net.Socket; 6 import java.net.UnknownHostException; 7 8 //文件上传操作 9 public class JavaDemo2 { 10 //客户端 11 public static void main(String[] args) throws Exception { 12 //client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server 13 14 15 16 // 1.创建Socket连接对象:创建它对应的对接的iP和端口。。。 17 Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999); 18 //2.创建一个输出流 19 OutputStream outputStream = socket.getOutputStream(); 20 //3.传入文件需要文件流 21 //读取文件 22 FileInputStream myFileStream = new FileInputStream(new File("src/a123.jpg")); 23 //写出文件 24 byte[] buffer = new byte[1024]; 25 int len; 26 while ((len=myFileStream.read(buffer))!=-1){ 27 outputStream.write(buffer,0,len); 28 } 29 //同知服务器我传输完成 30 socket.shutdownOutput(); 31 System.out.println("上传成功"); 32 33 //接受服务器发过来的 34 InputStream isput = socket.getInputStream(); 35 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 36 byte[] buffer2 = new byte[1024]; 37 int len2; 38 while ((len2=isput.read(buffer2))!=-1){ 39 byteArrayOutputStream.write(buffer2,0,len2); 40 } 41 //打印服务端的确认消息 42 System.out.println(byteArrayOutputStream.toString()); 43 44 //关闭资源 45 byteArrayOutputStream.close(); 46 isput.close(); 47 48 myFileStream.close(); 49 outputStream.close(); 50 socket.close(); 51 52 53 54 } 55 56 }
服务器:
-
建服务。ServerSocket。。。
-
监听客户端消息:Socket accept = serverSocket.accept();//阻塞式监听
-
传入文件需要文件流:读取文件 写出文件
-
获取输入流
-
文件输出流:输入流 把信息读取到 缓冲区 返回字节数:文件输出流写入文件
- 反馈给客户端消息,关闭
package Demo1.JavaSe.javasocket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class JavaDemo2Server { //服务端 public static void main(String[] args) throws IOException { //1.创建服务。 ServerSocket serverSocket = new ServerSocket(9999); //2.监听客户端消息 Socket accept = serverSocket.accept();//阻塞式监听 //3.获取输入流 InputStream iput = accept.getInputStream(); //4.文件输出 FileOutputStream receive = new FileOutputStream(new File("receive.jpg")); byte[] buffer = new byte[1024]; int len; //输入流 把信息读取到 缓冲区 返回字节数 while ((len = iput.read(buffer))!=-1){ receive.write(buffer,0,len); } System.out.println("接受成功"+len+"字节数"); //反馈给客户端 OutputStream outputStream = accept.getOutputStream(); outputStream.write("来自服务器的确认消息!".getBytes()); //5.关闭 receive.close(); iput.close(); serverSocket.close(); } }
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!