I had this problem a few years ago - though it is rare. My limit was more like 20 file descriptors, rather than 255. I was writing supporting code for an app. which was ported from a mainframe, and a redesign was not an option.
The limit is associated with the process, so what I did was to spawn 'worker' processes to do the IO for me, and some of the processing. Essentially I split the task, with a management process which co-ordiinated everything. It was a redesign for my part of the app., but it worked very well and was scalable. Eventually I extended it to allow local processing and IO on different machines (communication used INET sockets).
So, to beat a limitation of a single process, just create more!
This problem of 255 limit is independent of ulimit.
I set this on /etc/system :-
set rlim_fd_max=65536
set rlim_fd_cur=65536
So that I get
host# ulimit -n
65536
But still I have 255 limitation.