Hi, I'm writing a very simple UDP server that echos messages back to a sender. The sender tries to spam the server. When I run the client, I get a lot of `Send(ByteString(......), NoAk(null))` responses. The UDP server literally just echos the content back. It isn't doing any blocking compute.
Any ideas what I can do to get rid of these send failures? Code below. Matthew *import *java.net.InetSocketAddress*import *akka.actor.{Props, ActorSystem, ActorRef, Actor}*import *akka.io.{UdpConnected, IO, Udp}*import *akka.util.ByteString*import *scala.collection.immutable.Queue*object *Client { *def *main(args: Array[*String*]): Unit = { *println*(*"Client starting up"*) *val **Array*(host, port) = args *val *system = *ActorSystem*(*"boo"*) *val *ss = system.actorOf(*Props*(*new *SendStuffConnected(*new *InetSocketAddress(host, port.toInt)))) *println*(*"Client started"*) *this *synchronized { *this *wait 1000 } *println*(*"Sending messages"*) *for*(i <- 1 to 10000) { ss ! *f"**$*i*: Hi Mum" * ss ! *f"**$*i*: Yo Dad" * } *println*(*"Client sent message"*) }}*case class *SendStuffConnected(address: InetSocketAddress) *extends *Actor { *import **context*.system *IO*(UdpConnected) ! UdpConnected.*Connect*(*self*, address) *def *receive: *Receive *= awaitReady() *def *awaitReady(msgs: Queue[*String*] = Queue.*empty*): *Receive *= { *case *UdpConnected.Connected => *println*(*f"Client awaiting ready with messages: **$*msgs*"*) *context *become ready(sender()) msgs foreach (*self *! _) *case *msg: *String *=> *println*(*f"Client stashing message: **$*msg*"*) *context *become awaitReady(msgs enqueue msg) } *def *ready(connection: ActorRef): *Receive *= { *case *msg: *String *=> *println*(*f"Client sending message: **$*msg*"*) connection ! UdpConnected.*Send*(*ByteString*(msg)) *case *UdpConnected.*Received*(data) => *println*(*f"Client received message **$*{data.utf8String}*"*) *case *d @ UdpConnected.Disconnect => connection ! d *case *UdpConnected.Disconnected => *context *stop *self * *case *UdpConnected.*CommandFailed*(cmd) => cmd *match *{ *case *UdpConnected.*Send*(msg, ack) => *println*(*f"Failed sending : **$*{msg.utf8String}*"*) *case *_ => *println*(*f"Failed with: **$*cmd*"*) } *println*(*f"Failed command: **$*cmd*"*) *case *unexpected => *println*(*f"Client got unexpected message: **$*unexpected*"*) } } *import *java.net.InetSocketAddress*import *akka.actor.{Props, ActorRef, ActorSystem, Actor}*import *akka.io.{Udp, IO}*object *Server { *def *main(args: Array[*String*]): Unit = { *println*(*"Server starting up"*) *val **Array*(host, port) = args *val *system = *ActorSystem*(*"boo"*) *val *rs = system.actorOf(*Props*(*new *ReceiveStuff(*new *InetSocketAddress(host, port.toInt)))) *println*(*"Server started"*) }}*class *ReceiveStuff(address: InetSocketAddress) *extends *Actor { *import **context*.system *IO*(Udp) ! Udp.*Bind*(*self*, address) *override def *receive: *Receive *= { *case *Udp.*Bound*(local) => *println*(*f"Server bound to **$*local*"*) *context *become ready(sender()) *case *unhandled => *println*(*f"Server received unhandled message: **$*unhandled*"*) } *def *ready(socket: ActorRef): *Receive *= { *case *Udp.*Received*(data, remote) =>*// println(f"Server received message: ${data.utf8String} from ${remote}") * socket ! Udp.*Send*(data, remote) *// echo * *case *Udp.Unbind => socket ! Udp.Unbind *case *Udp.Unbound => *context *stop *self * *case *unhandled => *println*(*f"Server received unhandled message: **$*unhandled*"*) }} -- Dr Matthew Pocock Turing ate my hamster LTD mailto: turingatemyhams...@gmail.com Integrative Bioinformatics Group, School of Computing Science, Newcastle University mailto: matthew.poc...@ncl.ac.uk gchat: turingatemyhams...@gmail.com msn: matthew_poc...@yahoo.co.uk irc.freenode.net: drdozer skype: matthew.pocock tel: (0191) 2566550 mob: +447535664143 -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+unsubscr...@googlegroups.com. To post to this group, send email to akka-user@googlegroups.com. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.