socket und select

05/01/2009 - 16:02 von Georg Maaß | Report spam
Hallo,

muß man bei den UNIX-Funktionen socket und select auf dem Mac (10.5)
irgendwas besonderes beachten?

Folgender Code wird ausgeführt; Fehlerprüfungen habe ich hier
weggelassen, da das Problem erst in select erkennbar wird, aber
vielleicht durch irgendwas, das eventuell nicht mehr zeitgemàß ist, in
den Zeilen davor verursacht wird. In den man pages ist mir kein
Unterschied zu meinem Code aufgefallen.

int socketid = socket(AF_INET, SOCK_STREAM, 0);
fd_set setW;
struct timeval tm;
tm.tv_sec = 10;
tm.tv_usec = 0;
FD_ZERO (&setW);
FD_SET (socketid, &setW);
int res = select(FD_SETSIZE,0, &setW, 0, &tm);

Socket liefert mir brav eine ID (4) aber select antwortet nach 10
Sekunden immer mit 0, so daß ich also in das Socket nicht rein schreiben
darf. Woran liegt das?

Unter Linux (Intel und PowerPC) hat das definitiv vor Jahren
funktioniert, ich bilde mir ein, daß es auf dem Mac auch schon
funktioniert hatte, bin mir aber nicht sicher, ob das auf dem 10.5er
Intel war, auf dem es jetzt nicht funktioniert, oder noch auf dem 10.4er
PowerPC.

Kann mir jemand sagen, was ich eventuell in diesem Code-Ausschnitt
falsch mache, oder vielleicht an ganz anderer Stelle mir anschauen muß,
um das auf dem Mac zum Laufen zu bringen.

Herzliche Grüße, Georg
 

Lesen sie die antworten

#1 hns
09/01/2009 - 13:46 | Warnen spam
On 5 Jan., 16:02, Georg Maaß wrote:
Hallo,

muß man bei den UNIX-Funktionen socket und select auf dem Mac (10.5)
irgendwas besonderes beachten?

Folgender Code wird ausgeführt; Fehlerprüfungen habe ich hier
weggelassen, da das Problem erst in select erkennbar wird, aber
vielleicht durch irgendwas, das eventuell nicht mehr zeitgemàß ist, in
den Zeilen davor verursacht wird. In den man pages ist mir kein
Unterschied zu meinem Code aufgefallen.

int socketid = socket(AF_INET, SOCK_STREAM, 0);
fd_set setW;
struct timeval tm;
tm.tv_sec = 10;
tm.tv_usec = 0;
FD_ZERO (&setW);
FD_SET (socketid, &setW);
int res = select(FD_SETSIZE,0, &setW, 0, &tm);

Socket liefert mir brav eine ID (4) aber select antwortet nach 10
Sekunden immer mit 0, so daß ich also in das Socket nicht rein schreiben
darf. Woran liegt das?

Unter Linux (Intel und PowerPC) hat das definitiv vor Jahren
funktioniert, ich bilde mir ein, daß es auf dem Mac auch schon
funktioniert hatte, bin mir aber nicht sicher, ob das auf dem 10.5er
Intel war, auf dem es jetzt nicht funktioniert, oder noch auf dem 10.4er
PowerPC.

Kann mir jemand sagen, was ich eventuell in diesem Code-Ausschnitt
falsch mache, oder vielleicht an ganz anderer Stelle mir anschauen muß,



Wo wird der Socket mit irgendeiner Gegenstelle verbunden (connect,
bind, listen?).

um das auf dem Mac zum Laufen zu bringen.

Herzliche Grüße, Georg

Ähnliche fragen