gpt4 book ai didi

java - 通过套接字发送图像而不关闭套接字

转载 作者:行者123 更新时间:2023-12-02 06:46:36 25 4
gpt4 key购买 nike

我创建了一个应用程序,其中服务器(桌面)通过套接字将数据和文件发送到 Android 上的多个已连接的客户端,并且所有客户端套接字对象都存储在哈希集中。

现在的问题是,当我发送数据时,它工作正常,但在发送图像的情况下,如果我们没有关闭套接字,图像将无法到达客户端。如果套接字关闭,图像会到达客户端,但如果当套接字关闭时,并且当我尝试再次发送一些数据或文件时,会引发套接字关闭异常。

我们可以在不关闭套接字的情况下发送图像吗?谁能告诉我一些解决方案

我的代码如下所示

BufferedImage bimg;
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
String iteamnam=iteamname.getText();
try {
int i= dbGetDet.insertDetails("INSERT INTO hotel_items (item,descs,status,section,imagename) VALUES ('"+iteamnam+"','null','active','pub','pizza.png')");
if(i>0)
{
JOptionPane.showMessageDialog(rootPane, "<html><body>New Iteam Added</b></body></html>");
fillIteams();
fillSubIteams();
TABhs = new CopyOnWriteArraySet(TABhs);
System.out.println("Adding new Iteams Processing--------------------->"+TABhs.size());
for(Iterator <Socket> it=TABhs.iterator();it.hasNext();)
{
Socket so=it.next();
PrintWriter ot = new PrintWriter(so.getOutputStream());
ot.println("mainiteams#"+iteamnam+"#pizza.png#pub");
ot.flush();
bimg = ImageIO.read(new File("C:/div.png"));
ImageIO.write(bimg,"PNG",so.getOutputStream());
so.close(); //if close image will reach the client section (android)
}
}


} catch (Exception ex) {
Logger.getLogger(MYClientclass.class.getName()).log(Level.SEVERE, null, ex);
}
}

最佳答案

套接字被缓冲(数据实际上是通过网络以数据包形式发送的)。您需要刷新流以将整个图像推出。尝试:

OutputStream os = so.getOutputStream();
PrintWriter ot = new PrintWriter(os);
ot.println("mainiteams#"+iteamnam+"#pizza.png#pub");
ot.flush();
bimg = ImageIO.read(new File("C:/div.png"));
ImageIO.write(bimg,"PNG",os);
os.flush()

关于java - 通过套接字发送图像而不关闭套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com