On Tue, 21 Jun 2005 11:07:35 -0400, Peter Hansen wrote: > > Please clarify: what does this mean? "Sending a socket" is not a usual > way to describe TCP communications. Do you mean your program _opens_ a > socket (like a phone connection) and _sends_ some data, then waits for > data to be received from the other end? Or are you (as it almost > sounds) opening and closing sockets repeatedly for each part of the > conversation? >
Sorry for the lack of clarity. I opened the socket once (i don't know if itit is important to open inside or outside the comunication thread). And them send "packages" and wait for data. > > I think you are using the term "socket" where you should be using > "packet". A socket is the virtual connection created by TCP. A packet > is either a single blob of data sent by the TCP code in the operating > system, or perhaps a single chunk of your own data. > Thanks for the vocabulary correction. > If you are using a single TCP socket to send multiple packets, and you > are talking about those packets being sent out of order, it's very > unlikely and there must be another explanation. TCP _is_ reliable, and > you will not get data out of order unless you do something to screw > things up, for example by creating a race condition by doing > multithreaded code incorrectly. > I think this is the case (see the post of Toby). I didn't try it out but I think the problem is that i *do* comunication in both threads. > > Some people advise that, but there's really nothing *wrong* with doing > this in a second thread, and in fact I do similar things all the time > with no ill effects. While async frameworks _can_ make this easier, > they could also make it harder (at least for a while) as you adjust your > brain to the new approach. Furthermore, at least in the case of > wxPython and Twisted (on Windows) there can be problems integrating the > two loops. I don't believe the latest Twisted claims to have fully > solved the problems involved yet, so you might still be required to have > a second thread for the TCP stuff. > Yes, i have read that there is problems yet. > > I use a non-blocking socket and select() calls in my thread, and > communicate with the GUI thread using appropriate Queue objects and > calls to PostEvent() (or CallAfter()) on the wx side of things. It's > pretty straightforward, so if you post a small piece of your application > which reproduces the problem it shouldn't be hard for someone here to > help you fix it. > Thanks. First i would check if the problem is what Toby says. > > No more so than using threads, unless your problem is caused by the > threads themselves (as I suggested above) in which case it might be > easier to just fix the problem. > > -Peter Thank you very much Zunbeltz -- http://mail.python.org/mailman/listinfo/python-list