简体   繁体   English

java中的UDP套接字编程

[英]UDP socket programing in java

This sample code shown bellow:此示例代码如下所示:

public class UDPServer
{

    enter code here
    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        DatagramSocket serverSocket=new DatagramSocket(9876);
        byte[] receiveData=new byte[1024];
        byte[] sendData=new byte[1024];
        while(true)
        {
            DatagramPacket receivePacket=new DatagramPacket(receiveData, receiveData.length);
            String sentence=new String(receivePacket.getData());
            InetAddress IPAddress=receivePacket.getAddress();
            int port=receivePacket.getPort();
            String capitalizedSentennce=sentence.toUpperCase();
            sendData=capitalizedSentennce.getBytes();
            DatagramPacket sendPacket=new DatagramPacket(sendData, sendData.length,IPAddress,port);
            serverSocket.send(sendPacket);
        }
    }

}

is giving the following error when executed:执行时出现以下错误:

 Exception in thread "main" java.lang.IllegalArgumentException: Port out of range:-1
        at java.net.DatagramPacket.setPort(Unknown Source)
        at java.net.DatagramPacket.<init>(Unknown Source)
        at java.net.DatagramPacket.<init>(Unknown Source)
        at UDPServer.main(UDPServer.java:21)

Can someone help me to resolve it out?有人可以帮我解决吗? Also if possible please provide additional information why it happens.此外,如果可能,请提供更多信息,为什么会发生这种情况。

You forgot to receive anything into the receivePacket.您忘记在receivePacket.接收任何receivePacket. So there is nothing there.所以那里什么都没有。 No port number, no source address, no data.没有端口号,没有源地址,没有数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM