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

Reply via email to