From: grimm AT itd DOT nrl DOT navy DOT mil (Todd M. Grimm) Subject: Re: select() 11 Oct 1998 13:25:55 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2138520006-1113834566-908114887=:22891" To: gnu-win32 AT cygnus DOT com This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info. ---2138520006-1113834566-908114887=:22891 Content-Type: TEXT/PLAIN; charset=US-ASCII Thanks to all those who responded to my select() problems. I have found my solution. Maybe this is what ails some of you with similar problems, maybe your problem is something different. To recap, my receiving process was hanging on select() at the start even though there was data. When a key (even shift) was pressed in the shell window it would unhang and consume the already waiting data. The other problem was that all calls to select() after that returned with a value of 1 even when there was no data on the socket. It turns out that at run-time or maybe at link time, the select() that is used is the unix kind that that uses the bit mask to specify what file descriptors are being watched. However, the include files I was using use some kind of Windows version that uses a structure with an array in it. So, when the bitmask version tried to use the structure I was passing it, it looked like a bitmask that wanted it to check stdin all the time. This explains the bad behavior. The solution is to simple use the right include files with the bitmask macros (FD_SET, FD_ZERO, etc.). That way what I build and pass really is the bitmask and it works just fine. These are those simple little platform issues that really bite you good. I hope this helps someone else avoid the watsed hours this cost me. Attached are my simple demo programs that do it right now. These may be useful to someone looking for a starting point or to see what they do for includes that works. Todd ---2138520006-1113834566-908114887=:22891 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="SimpleServer.C" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBi ZWdpbiBmaWxlIFNpbXBsZVNlcnZlci5DDQoNCi8vIGNvbXBpbGUgY29tbWFu ZDogZ2NjIC1vIFNpbXBsZVNlcnZlciBTaW1wbGVTZXJ2ZXIuQyAtbHN0ZGMr Kw0KLy8gb24gU29sYXJpcyB5b3UgbWF5IGFsc28gbmVlZDogLWxzb2NrZXQg LWxuc2wNCg0KLy8gdXNpbmcgQ2VudGVyTGluZSBDKys6IA0KLy8gICAvdm9s L0NlbnRlckxpbmUtMi4xLjEvYmluL0NDIC1vIFNpbXBsZVNlcnZlciBTaW1w bGVTZXJ2ZXIuQyAtbHNvY2tldA0KDQovLyB0ZXN0IGluc3RydWN0aW9uczoN Ci8vDQovLyAxLiBjb21waWxlIGJvdGggdGhpcyBmaWxlIGFuZCB0aGUgU2lt cGxlQ2xpZW50LkMNCi8vIDIuIHJ1biBTaW1wbGVTZXJ2ZXIgZmlyc3QgaW4g YSBiYXNoIG9yIERPUyB3aW5kb3cNCi8vIDMuIHJ1biBTaW1wbGVDbGllbnQg aW4gYW5vdGhlciBiYXNoIG9yIERPUyB3aW5kb3cNCi8vIDQuIHRoZXkgY29u bmVjdCBhbmQgU2ltcGxlQ2xpZW50IHN0YXJ0cyBzZW5kaW5nIG1lc3NhZ2Vz L3NsZWVwaW5nDQovLw0KLy8gNS4gU2ltcGxlU2VydmVyIGhhbmdzIGluIGEg c2VsZWN0IGV2ZW4gdGhvdWdoIGRhdGEgaXMgYXZhaWxhYmxlDQovLyAgICB1 bnRpbCB5b3UgcHJlc3MgYW55IGtleSBpbiBpdHMgd2luZG93IChldmVuIHNo aWZ0IG9yIGN0cmwgDQovLyAgICBvciBhbHQgd2lsbCBkbykuLi5zZWUgYWxz byBub3RlcyBhdCB0aGUgY2xvc2UoMCkgY2FsbCBiZWxvdw0KLy8NCi8vIDYu IG9uY2UgInVuaHVuZywiIFNpbXBsZVNlcnZlciBhbHdheXMgZ2V0cyBhIHJl dHVybiB2YWx1ZSBvZg0KLy8gICAgb25lIGZyb20gc2VsZWN0KCkgZXZlbiB3 aGVuIHRoZXJlIGlzIG5vIGRhdGEsIHRodXMgaXQgYWx3YXlzDQovLyAgICBw cm9jZWVkcyB0byB0aGUgcmVhZCBjYWxsIHdoZXJlIGl0IGJsb2Nrcw0KLy8N Ci8vIEJPVFRPTSBMSU5FOiBJIG5lZWQgc2VsZWN0KCkgdG8gYmxvY2sgYmVj YXVzZSBJIHdhbnQgdG8gdXNlIA0KLy8gdGhlIHRpbWVvdXQgdmVyc2lvbiBi ZWxvdyBpbiBvcmRlciB0byB3YWl0IGZvciBkYXRhIGJ1dCANCi8vICJjb21l IHVwIGZvciBhaXIiIGV2ZXJ5IHNvIG1hbnkgc2Vjb25kcyB0byBkbyBzb21l IG90aGVyIA0KLy8gc3R1ZmYuLi5pZiBzZWxlY3QoKSBhbHdheXMgcmV0dXJu cyBJIGNhbm5vdCBnZXQgbXkgd2FpdGluZyANCi8vIHBlcmlvZCBhcyBkZXNp cmVkLg0KLy8NCi8vIFNPTFVUSU9OOiBJIHdhcyB1c2luZyB0aGUgd3Jvbmcg aW5jbHVkZSBmaWxlcy4gVGhlIG9uZXMgSSANCi8vIHVzZWQgdXNlIGEgc3Ry dWN0dXJlIHdpdGggYW4gYXJyYXkgZm9yIGNob29zaW5nIHdoYXQgZmlsZSAN Ci8vIGRlc2NyaXB0b3JzIHRvIHNlbGVjdC4gQlVULCB0aGUgcnVudGltZSBz ZWxlY3QoKSB3YXMgcmVhbGx5IA0KLy8gdGhlIHRyYWRpdGlvbmFseSBiaXRt YXNrIHZlcnNpb24uIFVzaW5nIHRoZSAiR09PRCIgaW5jbHVkZXMgDQovLyBi ZWxvdyBpbnN0ZWFkIG9mIHRoZSAiQkFEIiBvbmVzIGZpeGVkIGl0Lg0KDQoj aW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVkZSA8c3RkaW8uaD4NCiNpbmNs dWRlIDxmc3RyZWFtLmg+DQojaW5jbHVkZSA8ZmNudGwuaD4NCiNpbmNsdWRl IDx1bmlzdGQuaD4NCiNpbmNsdWRlIDxzdHJpbmcuaD4NCg0KI2lmZGVmIFdJ Tk5UDQoNCi8vICoqKioqKioqKioqKioqKioqIGhlcmUncyB3aGVyZSB0aGUg cHJvYmxlbSB3YXMgKioqKioqKioqKioqKg0KLy8gQkFEIGluY2x1ZGVzDQov LyNkZWZpbmUgX19hdHRyaWJ1dGVfXyh4KQ0KLy8jaW5jbHVkZSA8V2luZG93 czMyL0Jhc2UuaD4NCi8vI2luY2x1ZGUgPFdpbmRvd3MzMi9Tb2NrZXRzLmg+ DQoNCi8vIEdPT0QgaW5jbHVkZXMNCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ DQojaW5jbHVkZSA8Y3lnd2luMzIvaW4uaD4NCg0KLy8gd2l0aCB0aGUgIkdP T0QiIGluY2x1ZGVzIEkgZ2V0IGxpbmsgDQovLyBlcnJvcnMgd2l0aG91dCB0 aGlzDQpleHRlcm4gIkMiIHsNCiAgdW5zaWduZWQgbG9uZyAgaHRvbmwodW5z aWduZWQgbG9uZyAgaCk7DQogIHVuc2lnbmVkIHNob3J0IGh0b25zKHVuc2ln bmVkIHNob3J0IGgpOw0KfQ0KDQojZWxzZQ0KI2luY2x1ZGUgPHN5cy9zb2Nr ZXQuaD4NCiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+DQojaW5jbHVkZSA8YXJw YS9pbmV0Lmg+DQojZW5kaWYNCg0KLy8gY29uc3RhbnRzDQojZGVmaW5lIFBP UlQgMjAwMg0KDQovLyBnbG9iYWxzIGZvciB0aGlzIGZpbGUNCnN0YXRpYyBp bnQgIGZkID0gLTE7DQoNCg0KaW50IG5vbl9ibG9ja19zZWxlY3Qodm9pZCkN CnsNCiAgc3RydWN0IGZkX3NldCBmZGJpdHM7DQogIEZEX1pFUk8oJmZkYml0 cyk7DQogIEZEX1NFVChmZCwgJmZkYml0cyk7DQoNCiAgc3RydWN0IHRpbWV2 YWwgaW50ZXJ2YWw7IGludGVydmFsLnR2X3NlYyAgPSAwOyBpbnRlcnZhbC50 dl91c2VjID0gMDsNCiAgIA0KICBpbnQgZmRzX3JlYWR5ID0gc2VsZWN0KGZk KzEsICZmZGJpdHMsIChmZF9zZXQqKSBOVUxMLCAoZmRfc2V0KikgTlVMTCwg JmludGVydmFsKTsNCiAgY2VyciA8PCAiTkItLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXNlbGVjdCgpIHJl dHVybmVkICIgPDwgZmRzX3JlYWR5IDw8IGVuZGw7DQoNCiAgcmV0dXJuIGZk c19yZWFkeTsNCn0NCg0KDQppbnQgdGltZW91dF9zZWxlY3QoaW50IHNlY29u ZHMpDQp7DQogIHN0cnVjdCBmZF9zZXQgZmRiaXRzOw0KICBGRF9aRVJPKCZm ZGJpdHMpOw0KICBGRF9TRVQoZmQsICZmZGJpdHMpOw0KDQogIHN0cnVjdCB0 aW1ldmFsIGludGVydmFsOyBpbnRlcnZhbC50dl9zZWMgID0gc2Vjb25kczsg aW50ZXJ2YWwudHZfdXNlYyA9IDA7DQogICANCiAgaW50IGZkc19yZWFkeSA9 IHNlbGVjdChmZCsxLCAmZmRiaXRzLCAoZmRfc2V0KikgTlVMTCwgKGZkX3Nl dCopIE5VTEwsICZpbnRlcnZhbCk7DQogIGNlcnIgPDwgIlRPLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1z ZWxlY3QoKSByZXR1cm5lZCAiIDw8IGZkc19yZWFkeSA8PCBlbmRsOw0KDQog IHJldHVybiBmZHNfcmVhZHk7DQp9DQoNCmludCBibG9ja19zZWxlY3Qodm9p ZCkNCnsNCiAgc3RydWN0IGZkX3NldCBmZGJpdHM7DQogIEZEX1pFUk8oJmZk Yml0cyk7DQogIEZEX1NFVChmZCwgJmZkYml0cyk7DQogICANCiAgaW50IGZk c19yZWFkeSA9IHNlbGVjdChmZCsxLCAmZmRiaXRzLCAoZmRfc2V0KikgTlVM TCwgKGZkX3NldCopIE5VTEwsIChzdHJ1Y3QgdGltZXZhbCAqKSBOVUxMKTsN CiAgY2VyciA8PCAiQi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXNlbGVjdCgpIHJldHVybmVkICIgPDwg ZmRzX3JlYWR5IDw8IGVuZGw7DQoNCiAgcmV0dXJuIGZkc19yZWFkeTsNCn0N Cg0KDQp2b2lkIGluaXQodm9pZCkNCnsNCg0KICBzdHJ1Y3Qgc29ja2FkZHJf aW4gYWRkcjsNCiAgbWVtc2V0KChjaGFyICopICZhZGRyLCAwLCBzaXplb2Yo YWRkcikpOw0KICBhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KICBhZGRy LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOw0KICBhZGRy LnNpbl9wb3J0ID0gaHRvbnMoUE9SVCk7DQogIGNlcnIgPDwgImNvbm5lY3Rp bmcgdmlhIHBvcnQgIiA8PCBQT1JUIDw8IGVuZGw7DQoNCiAgaW50IHNvY2sg PSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOwkJLy8gY3JlYXRl IHNvY2tldA0KICBpZiAoc29jazwwKSB7IHBlcnJvcigiY3JlYXRpbmcgc29j a2V0Iik7IGV4aXQoLTEpOyB9DQoNCiAgaWYgKGJpbmQoc29jaywgKHN0cnVj dCBzb2NrYWRkciopICZhZGRyLCBzaXplb2YoYWRkcikpKSB7IHBlcnJvciAo ImJpbmRpbmcgc29ja2V0Iik7IGNsb3NlKHNvY2spOyBleGl0KC0xKTsgfQ0K DQogIGlmIChsaXN0ZW4oc29jaywgMSkpIHsgcGVycm9yICgibGlzdGVuaW5n IHRvIHNvY2tldCIpOyBjbG9zZShzb2NrKTsgZXhpdCgtMSk7IH0NCg0KICBz dHJ1Y3Qgc29ja2FkZHIgcmVtb3RlOw0KICBpbnQgcmVtb3RlX2xlbiA9IHNp emVvZihyZW1vdGUpOw0KICBpZiAoKGZkID0gYWNjZXB0KHNvY2ssICZyZW1v dGUsICZyZW1vdGVfbGVuKSkgPT0gLTEpIHsgcGVycm9yKCJhY2NlcHRpbmcg c29ja2V0Iik7IGNsb3NlKHNvY2spOyBleGl0KC0xKTsgfQ0KICBjZXJyIDw8 ICJzZXJ2ZXIgc2lkZSBjb25uZWN0ZWQiIDw8IGVuZGw7DQogIGNsb3NlKHNv Y2spOw0KDQogIGNlcnIgPDwgImZkPSIgPDwgZmQgPDwgZW5kbDsvL3p6eg0K ICBjZXJyIDw8ICJmZCBtb2Rlcz0iIDw8ICh2b2lkKikgZmNudGwoZmQsIEZf R0VURkwpIDw8IGVuZGw7Ly96enoNCn0NCg0KDQppbnQgbWFpbihpbnQsIGNo YXIgKiopDQp7DQogIGNoYXIgYnVmZlsxMDAwXTsNCiAgaW5pdCgpOyAvLyBv cGVuIHRoZSBzb2NrZXQNCiAgd2hpbGUoMSkNCiAgew0KICAgIC8vY2VyciA8 PCAiY2FsbGluZyB0aW1lb3V0X3NlbGVjdCg1KSIgPDwgZW5kbDsNCiAgICAv L3RpbWVvdXRfc2VsZWN0KDUpOyANCiAgICAvL2NvdXQgPDwgImJhY2sgZnJv bSB0aW1lb3V0IiA8PCBlbmRsOw0KDQogICAgY291dCA8PCAiY2FsbGluZyBi bG9ja19zZWxlY3QoKSIgPDwgZW5kbDsNCiAgICBibG9ja19zZWxlY3QoKTsN Cg0KICAgIGNlcnIgPDwgImJhY2sgZnJvbSBcInNlbGVjdCgpXCIgYW5kIGdv aW5nIG9uIHRvIHJlYWQiIDw8IGVuZGw7DQogICAgaW50IGJ5dGVzcmVhZCA9 IHJlYWQoZmQsIGJ1ZmYsIChzaXplX3QpIDk5OSk7DQogICAgaWYgKGJ5dGVz cmVhZCA9PSAwKSBicmVhazsNCiAgICBidWZmW2J5dGVzcmVhZF0gPSAwOw0K ICAgIGNlcnIgPDwgInJlYWQgdGhpcyAjIiA8PCBidWZmIDw8ICIjIiA8PCBl bmRsOw0KICB9DQogIGNlcnIgPDwgImdvdCBlb2YiIDw8IGVuZGw7DQp9DQoN Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g ZW5kIGZpbGUgU2ltcGxlU2VydmVyLkMNCg== ---2138520006-1113834566-908114887=:22891 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="SimpleClient.C" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBi ZWdpbiBmaWxlIFNpbXBsZUNsaWVudC5DDQoNCi8vIGNvbXBpbGUgY29tbWFu ZDogZ2NjIC1vIFNpbXBsZUNsaWVudCBTaW1wbGVDbGllbnQuQyAtbHN0ZGMr Kw0KLy8gb24gU29sYXJpcyB5b3UgbWF5IGFsc28gbmVlZDogLWxzb2NrZXQg LWxuc2wNCg0KLy8gc2VlIHRlc3QgaW5zdHJ1Y3Rpb25zIGluIFNpbXBsZVNl cmV2ci5DDQoNCg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KI2luY2x1ZGUgPHN0 ZGlvLmg+DQojaW5jbHVkZSA8ZnN0cmVhbS5oPg0KI2luY2x1ZGUgPGZjbnRs Lmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+ DQoNCiNpZmRlZiBXSU5OVA0KDQovLyAqKioqKioqKioqKioqKioqKiBoZXJl J3Mgd2hlcmUgdGhlIHByb2JsZW0gd2FzICoqKioqKioqKioqKioNCi8vIEJB RCBpbmNsdWRlcw0KLy8jZGVmaW5lIF9fYXR0cmlidXRlX18oeCkNCi8vI2lu Y2x1ZGUgPFdpbmRvd3MzMi9CYXNlLmg+DQovLyNpbmNsdWRlIDxXaW5kb3dz MzIvU29ja2V0cy5oPg0KDQovLyBHT09EIGluY2x1ZGVzDQojaW5jbHVkZSA8 c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPGN5Z3dpbjMyL2luLmg+DQoNCiNl bHNlDQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGlu ZXQvaW4uaD4NCiNlbmRpZg0KDQojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+DQoN Ci8vIGNvbnN0YW50cw0KI2RlZmluZSBQT1JUIDIwMDINCg0KLy8gZ2xvYmFs cyBmb3IgdGhpcyBmaWxlDQpzdGF0aWMgaW50IGZkOw0KDQoNCnZvaWQgaW5p dCh2b2lkKQ0Kew0KICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsNCiAgbWVt c2V0KChjaGFyICopICZhZGRyLCAwLCBzaXplb2YoYWRkcikpOw0KICBhZGRy LnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KICBhZGRyLnNpbl9hZGRyLnNfYWRk ciA9IGluZXRfYWRkcigiMTI3LjAuMC4xIik7DQogIGFkZHIuc2luX3BvcnQg PSBodG9ucyhQT1JUKTsNCiAgY2VyciA8PCAiY29ubmVjdGluZyB2aWEgcG9y dCAiIDw8IFBPUlQgPDwgZW5kbDsNCg0KICBmZCA9IHNvY2tldChBRl9JTkVU LCBTT0NLX1NUUkVBTSwgMCk7CQkvLyBjcmVhdGUgc29ja2V0DQogIGlmIChm ZDwwKSB7IHBlcnJvcigiY3JlYXRpbmcgc29ja2V0Iik7IGV4aXQoLTEpOyB9 DQoNCiAgaWYgKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKSAmYWRk ciwgc2l6ZW9mKGFkZHIpKSkgeyBwZXJyb3IgKCJzb2NrZXRQcmVwIC0gY29u bmVjdGluZyBzb2NrZXQiKTsgZXhpdCgtMSk7IH0NCiAgY2VyciA8PCAic29j a2V0UHJlcCAtIGNsaWVudCBzaWRlIGNvbm5lY3RlZCIgPDwgZW5kbDsNCn0N Cg0KDQppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0Kew0KICBj aGFyIGJ1ZmZbMTAwMF07DQogIGJ1ZmZbMF0gPSAnQSc7IA0KICBidWZmWzFd ID0gMDsNCiAgaW5pdCgpOyAvLyBvcGVuIHRoZSBzb2NrZXQNCiAgY2VyciA8 PCAic2VuZGluZyBmaXJzdCBtZXNzYWdlIGluIDMgc2Vjb25kcyIgPDwgZW5k bDsgc2xlZXAoMyk7DQoNCiAgd2hpbGUoMSkNCiAgew0KICAgIGludCBsZW4g PSBzdHJsZW4oYnVmZik7DQogICAgd3JpdGUoZmQsIGJ1ZmYsIGxlbik7DQog ICAgY2VyciA8PCAic2VudCB0aGlzICMiIDw8IGJ1ZmYgPDwgIiMiIDw8IGVu ZGw7DQogICAgYnVmZltsZW5dICAgPSAneCc7DQogICAgYnVmZltsZW4rMV0g PSAwOw0KICAgIGNlcnIgPDwgInNsZWVwaW5nIiA8PCBlbmRsOw0KICAgIHNs ZWVwKDEwKTsNCiAgfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIGVuZCBmaWxlIFNpbXBsZUNsaWVudC5DDQo= ---2138520006-1113834566-908114887=:22891-- - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".