Udp客户端线程不可重用

时间:2014-03-02 22:25:42

标签: java multithreading udpclient

我正在开发一个简单的UDP通信软件来与我的机器人进行通信。

我已经能够使用此代码发送第一个数据包,但是当我尝试发送第二个数据包时它不会发送它也不会给我错误,我做错了什么?

编辑:问题是我不能两次使用send void。

代码:

发送虚空:

public static void Send(String Message)
{
    Client Clt = new Client();
    Clt.Message = Message;
    Clt.start();
}

客户:

public class Client extends Thread {

    public String Message;

    public void run()   
    {
            PrintStream myPS = null;
            try {
                myPS = new PrintStream(Start.CltSkt.getOutputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            myPS.println(Message);
            try {
                finalize();
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
}

编辑2(解决问题):

感谢所有回答/评论问题的人,尤其是EJP。

问题是: 我没有使用DatagramSocket,所以我最终得到了这个:

public static void Send(String Message)
    {
            InetAddress Ip = null;
            DatagramSocket datagramSocket = null;
            try {
                datagramSocket = new DatagramSocket();
            } catch (SocketException ex) {
                Logger.getLogger(Start.class.getName()).log(Level.SEVERE, null, ex);
            }
            byte[] buffer = Message.getBytes();
            DatagramPacket packet;
            try {
                Ip = InetAddress.getByName(CltIp);
            } catch (UnknownHostException ex) {
                Logger.getLogger(Start.class.getName()).log(Level.SEVERE, null, ex);
            }
            packet = new DatagramPacket(buffer, buffer.length, Ip, Integer.parseInt(CltPort));
            try {
                datagramSocket.send(packet);
            } catch (IOException ex) {
                Logger.getLogger(Start.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

我并不喜欢使用数据报套接字!现在我是:)

0 个答案:

没有答案