java - 尝试通过与客户端和服务器的 java UDP 套接字连接发送图像时出现 Image = Null 错误
问题描述
因此,我正在尝试编写代码来实现一个图像,该图像通过客户端和服务器在 Java 中一个包一个包地发送。 这是作业的要点
这是服务器的代码:
import java.io.*;
import java.net.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876); //makes the datagram socket at the port 9876 for dat transfer
byte[] receiveData = new byte[1024]; //allocate memory for data being recieved
byte[] sendData = new byte[1024]; //allocate memory for data being sent
byte[] buffer = new byte[1024];
DatagramPacket receiveByte = new DatagramPacket(buffer, buffer.length);
serverSocket.receive(receiveByte);
byte[] data = receiveByte.getData();
ByteArrayInputStream bais = new ByteArrayInputStream(data);
BufferedImage image2 = ImageIO.read(bais);
ImageIO.write(image2, "bmp", new File("C:\\Users\\Demon FFA\\Documents\\Network Design\\Phase 2\\word1.bmp"));
System.out.println("Image receieved!");
这是客户端的代码:
import java.io.*;
import java.net.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
class UDPClient {
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); //create input stream for client to server message
DatagramSocket clientSocket = new DatagramSocket(); //create the socket for the client
InetAddress IPAddress = InetAddress.getByName("localhost"); //change the hostname into an ip address with DNS
byte[] sendData = new byte[1024]; //allocate memory for data being sent
byte[] receiveData = new byte[1024]; //allocate memory for the data being recieved
BufferedImage image = ImageIO.read(new File("C:\\Users\\Demon FFA\\Documents\\Network Design\\Phase 2\\word.bmp"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "bmp", baos);
//baos.flush();
byte[] data = baos.toByteArray();
byte[] buffer = new byte[1024];
int i;
int c = 0;
for(i = 0; i<data.length; i++) {
buffer[c] = data[i];
c++;
if (i%1024==0){
c = 0;
}
DatagramPacket sendByte = new DatagramPacket(buffer, buffer.length, IPAddress, 9876);
clientSocket.send(sendByte);
}
}
}
这是错误:
解决方案
推荐阅读
- delphi - 有没有办法在 Firemonkey 中实现自下而上的事件通知?
- php - MAC , PHP:Failed to load resource: 服务器响应状态为 405 (Method Not Allowed)
- php - $wpdb -> get_col 返回重复的数组
- sql - 这段代码来自什么编程语言?
- c# - API 设计架构 - 反向网关?
- css - SASS:创建没有一种样式/属性的类的克隆
- nginx - Nginx infinite redirect using try_files
- javascript - How do I turn string insert data into a series for react highcharts?
- python - 运行时范围和`main`符号在函数内部或外部是不同的
- mongodb - docker容器内的mongodb身份验证