You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary D. Gregory (Jira)" <ji...@apache.org> on 2021/02/06 15:58:00 UTC

[jira] [Closed] (NET-694) apache commons net 关于 DiscardUDPClient

     [ https://issues.apache.org/jira/browse/NET-694?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary D. Gregory closed NET-694.
-------------------------------
    Resolution: Invalid

No in reply in ~60 days, closing.

 

> apache commons net 关于 DiscardUDPClient
> --------------------------------------
>
>                 Key: NET-694
>                 URL: https://issues.apache.org/jira/browse/NET-694
>             Project: Commons Net
>          Issue Type: Improvement
>    Affects Versions: 3.6
>            Reporter: wqd
>            Priority: Major
>
> There is "java.lang.IllegalArgumentException: illegal length" when i use DiscardUDPClient to send.
>  
> {code:java}
> java.lang.IllegalArgumentException: illegal length
> at java.net.DatagramPacket.setLength(DatagramPacket.java:378)
> at org.apache.commons.net.discard.DiscardUDPClient.send(DiscardUDPClient.java:68)
> {code}
>  
> See the source "https://github.com/apache/commons-net/blob/master/src/main/java/org/apache/commons/net/discard/DiscardUDPClient.java".
> {code:java}
> public DiscardUDPClient()    {        
> sendPacket = new DatagramPacket(new byte[0], 0);    
> }
> public void send(final byte[] data, final int length, final InetAddress host, final int port)
>         throws IOException
> {
>     sendPacket.setData(data);
>     sendPacket.setLength(length);
>     sendPacket.setAddress(host);
>     sendPacket.setPort(port);
>     _socket_.send(sendPacket);
> }
> {code}
> and "java.net.DatagramPacket".
> {code:java}
> public synchronized void setData(byte[] buf) {
>     if (buf == null) {
>         throw new NullPointerException("null packet buffer");
>     }
>     this.buf = buf;
>     this.offset = 0;
>     this.length = buf.length;
>     this.bufLength = buf.length;
> }
> public synchronized void setLength(int length) {
>     if ((length + offset) > buf.length || length < 0 ||
>         (length + offset) < 0) {
>         throw new IllegalArgumentException("illegal length");
>     }
>     this.length = length;
>     this.bufLength = this.length;
> }
> {code}
> I think in the case of multithreading, the "DiscardUDPClient.send" method is not Atomicity. 
> I think that's why my problem came up.
>  
> why not add synchronized for "DiscardUDPClient.send"?
>  
> Forgive me for my nonstandard English
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)