Java網(wǎng)絡(luò)編程,用UDP傳入一張圖片到服務(wù)器,解析圖片到項(xiàng)目的根目錄中【詩(shī)書(shū)畫(huà)唱】
使用UDP傳入一張圖片到服務(wù)器,服務(wù)器解析圖片到項(xiàng)目的根目錄中

package getIP;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class UdpImgfuWuDuan {
public static void main(String[] args) throws Exception{
System.out.println("服務(wù)器啟動(dòng)了 ");
DatagramSocket DatagramSocket=new DatagramSocket(54321);
//創(chuàng)建接收數(shù)據(jù)的容器:
byte[] byteArray1=new byte[1024*60];
DatagramPacket DatagramPacket=
new DatagramPacket(byteArray1, byteArray1.length);
//堵塞性的接收數(shù)據(jù):
System.out.println("服務(wù)器正在等待用戶發(fā)送圖片");
DatagramSocket.receive(DatagramPacket);
System.out.println("服務(wù)器接收了用戶發(fā)送的圖片");
//解析數(shù)據(jù)包:
byte[] byteArray2=DatagramPacket.getData();
int len1=DatagramPacket.getLength();
//將解析后的字節(jié)數(shù)組再轉(zhuǎn)回圖片:
ByteArrayInputStream ByteArrayInputStream=
new ByteArrayInputStream(byteArray2,0,len1);
FileOutputStream FileOutputStream=
new FileOutputStream("客戶端發(fā)送的3.jpg");
//遍歷byte數(shù)組:
byte [] byteArray3=new byte[1024];
int len2;
while((len2=ByteArrayInputStream.read(byteArray3))!=-1){
FileOutputStream.write(byteArray3,0,len2);
}
FileOutputStream.flush();
FileOutputStream.close();ByteArrayInputStream.close();
DatagramSocket.close();
}
}


package getIP;
import java.util.*;
import java.io.*;
import java.net.*;
public class UdpImgkeHuDuan {
public static void main(String[] args)throws Exception {
// 4.使用upd傳入一張圖片到服務(wù)器,服務(wù)器解析圖片到項(xiàng)目的根目錄中
// disiti();
//創(chuàng)建發(fā)送數(shù)據(jù)的對(duì)象
System.out.println("客戶端啟動(dòng)");
DatagramSocket DatagramSocket=new DatagramSocket(12345);
//得到發(fā)送的數(shù)據(jù)并打包
FileInputStream FileInputStream=new FileInputStream("3.jpg");
ByteArrayOutputStream ByteArrayOutputStream
=new ByteArrayOutputStream();
//在讀圖片的同時(shí)將讀取的內(nèi)容寫(xiě)入到byte字節(jié)流里
byte[] byteArray1=new byte[1024];
int len;
while((len=FileInputStream.read(byteArray1))!=-1){
ByteArrayOutputStream.write(byteArray1,0,len);
}
ByteArrayOutputStream.flush();
byte[] byteArray2=ByteArrayOutputStream.toByteArray();
//將讀取的數(shù)據(jù)轉(zhuǎn)為字節(jié)數(shù)組
DatagramPacket DatagramPacket=new?
DatagramPacket(byteArray2,byteArray2.length,
new InetSocketAddress("localhost",54321));
//發(fā)送數(shù)據(jù)
DatagramSocket.send(DatagramPacket);
DatagramSocket.close();
}
}



鼠標(biāo)右鍵刷新后:
