首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

socket发出请求对方无应答怎么自动关闭socket或报错?

2013-12-16 
socket发出请求对方无应答如何自动关闭socket或报错???import java.io.BufferedInputStreamimport java.i

socket发出请求对方无应答如何自动关闭socket或报错???


import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;


import javax.swing.JOptionPane;

public class Receive extends Thread
{
String friendip;
String receivepath;
DatagramSocket rds;
DatagramPacket rdp;
String msg;
public Receive(String friendip,String receivepath)

this.friendip=friendip;
this.receivepath=receivepath;
    }
public void run()
{
try
{
try
{rds=new DatagramSocket(8880);}
        catch(SocketException e)
        {
        JOptionPane.showMessageDialog(null, "对方无应答!", null, JOptionPane.OK_OPTION);
        System.out.println("对方无应答!");//这个地方想表示没有收到对方的响应后想报错??怎么办?request部分的代码我就不贴上来了,大致就是向另外一台电脑提出请求,然后我想在他不在线的时候,我的电脑能提示对方无应答.
        }
        try
        {
        byte[] rebuf=new byte[256];
            rdp=new DatagramPacket(rebuf, rebuf.length);
            rds.receive(rdp);        
            msg=new String(rebuf,0,rdp.getLength());        
            rds.close();
        }
        catch(IOException e)
        {
        JOptionPane.showMessageDialog(null, "网络通讯出现错误,问题在"+e.toString(), null, JOptionPane.OK_OPTION);
        }
        
        System.out.println("Receive部分完成11111");
        System.out.println("Receive msg(YES/NO):"+msg);        
        if(msg.equals("YES"))
        {
        /*int option = JOptionPane.showConfirmDialog(null,"点击确认下载或取消","P2P",JOptionPane.YES_NO_OPTION);
            if (option == JOptionPane.YES_OPTION)
    {
            download();
    }*/
        System.out.println("Receive部分完成22222");
        JOptionPane.showMessageDialog(null, "点击确认下载", null, JOptionPane.OK_OPTION);
        download();
        
        }
        if(msg.equals("NO"))
        {
        JOptionPane.showMessageDialog(null, "对方不同意共享此文件!", null, JOptionPane.OK_OPTION);
        }
}
catch (Exception e) 
{
e.printStackTrace();
}
    

}
}
[解决办法]
要设置接收延时,在延时时间内没收到回复就会抛出异常

热点排行