Nicholas, Please excuse me but I must ask you how exactly you use select(). I've seen many people use select() the wrong way. It would be a shame if you did not follow through with this before abandoning it. It should work - what do you mean "when trying to transmit, select() terminates with a timeout"? Do you call send() and then select() on the socket or the other way around? do you clear all sets before each call to select()?
p.s I am not sure this discussion is within the board's scope anymore. We may want to take this offline. On 11/01/10 16:24 PM, Nicolas Pinault wrote: > > > Yoav Nissim a écrit : >> Simon, >> Is the half duplex limitation only a socket implementation issue? >> other than the missing locks, what else is missing? using the netconn >> API seems to result in the same problem. >> Isn't the TCPIP thread performing operations one at a time anyway? >> >> Nicolas, >> I'm sorry. I tried thinking about this for a while but the only way I >> could produce any helpful code here is if I throw myself into >> actually coding and testing it... my boss would not like that I >> imagine :) > Ok. I understand. No problem. >> Are you working with existing vnc server code that uses two threads, >> or are you writing the code yourself? > My code is based on a code I have found in eCos svn tree. The original > code uses 2 threads. One for receiving commands from client and one > for sending screen content. > >> If you have existing code, maybe you should try serializing the send >> and receive operations with a separate thread using select as I've >> suggested earlier. > I have modified my code to use only one thread. The result is > catastrophic. It works worse than ever. When trying to transmit, > select() terminates with a timeout (1sec) >> If you are writing your own code, could you clarify why a single >> thread (not the main) using select and doing all Rx and Tx would not >> work? > select() blocks until data are received or timeout occurs. > The system screen is updated by another thread. When the screen has > been updated, screen content must be sent to the client. > How do you go out of select() if you don't use timeout ? > > Nicolas >> Yoav. >> >> >> On 11/01/10 11:33 AM, Nicolas Pinault wrote: >>> Simon, >>> >>> Simon Goldschmidt a écrit : >>>>> 2. Keep Rx and Tx threads locked and waiting on a select running in >>>>> another thread (in essence adding the locking mechanism that lwIP >>>>> does >>>>> not support) >>>>> >>>> >>>> The idea is good, but it's not what lwIP doesn't support, since you >>>> don't get full duplex but mutual exclusion for read & write. Full >>>> duplex would allow simultaneously sending and receiving on the >>>> wire. However, that's the best you can get, currently, when using >>>> sockets. >>>> >>>> >>> My problem is not to simultaneously receive and transmit data. >>> My problem is that I have an application that receives data and >>> transmit data asynchronously. >>> My application is a vnc server. >>> Vnc server receives data from client when, for example, the user >>> moves the mouse or hits keys. >>> Vnc server sends screen content to client when needed. >>> The client can request the server to force send screen content. In >>> this case, no problem. >>> But vnc server can also need to send screen content while nothing is >>> received. >>> Two threads are ideal in this situation. One for receiving commands >>> and one for sending screen content. >>> >>> I can't see any other solution than using select with a short timeout. >>> >>> Nicolas >>> >>>> Simon >>>> >>> >>> >>> _______________________________________________ >>> lwip-users mailing list >>> [email protected] >>> http://lists.nongnu.org/mailman/listinfo/lwip-users >> >> -- >> Yoav Nissim >> Software Engineer, Software Tools Division >> Jungo Software Technologies >> Email: [email protected] >> Web: http://www.jungo.com >> Phone: +972-74-7212138 >> Fax: +972-74-7212122 >> Mobile: +972-54-2271315 >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> lwip-users mailing list >> [email protected] >> http://lists.nongnu.org/mailman/listinfo/lwip-users > > > _______________________________________________ > lwip-users mailing list > [email protected] > http://lists.nongnu.org/mailman/listinfo/lwip-users -- Yoav Nissim Software Engineer, Software Tools Division Jungo Software Technologies Email: [email protected] Web: http://www.jungo.com Phone: +972-74-7212138 Fax: +972-74-7212122 Mobile: +972-54-2271315
_______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
