Einstellen der Socket-Optionen unter OSX

9

Ich versuche, das Empfangs-Timeout für ein Socket zu setzen, das mit dem Network.Socket -Modul erstellt wurde. Hier ist ein Codeausschnitt:

%Vor%

Die Zeile setSocketOption löst eine Ausnahme aus:

%Vor%

setSocketOption akzeptiert nur Int Argumente für Einstellungen, aber nicht alle Socket-Optionen möchten ein Int . Speziell RecvTimeOut und SendTimeOut erwarten eine struct timeval . Gibt es eine andere Möglichkeit, diese Optionen aus Haskell zu setzen?

Ich führe GHC 7.4.2 auf OSX 10.8.1

BEARBEITEN:

Network.Socket.Options scheint hier die beste Lösung zu sein, und es hat sich herausgestellt, dass es nur eine winzige Pull-Anforderung erfordert, sie auf OSX zu kompilieren. Ab Version 0.2.0.1 kompiliert network-socket-options jetzt unter OSX.

EDIT 2: Kein Glück mit Network.Socket.Options . Die Funktion setRecvTimeout scheint keine Auswirkungen auf OSX zu haben. Am Ende habe ich timeout aus dem Paket System.Timeout als Workaround verwendet.

%Vor%     
jhickner 25.09.2012, 20:00
quelle

1 Antwort

2

Ich lese über Haskell und Struct-Definitionen von hier: Ссылка . Die struct timeval Definition von der MSDN hier (Es ist die gleiche Struktur auf GNU und wahrscheinlich auf OSX): Ссылка

die Zeit C-Header:

%Vor%

Es scheint, als ob Sie in Haskell eine Art von Strukturkonstruktor definieren müssen. Oder eine vollständige Bindung an die Zeit-Header wie diese (aus Ссылка ):

%Vor%

Eine auf die notwendige Version reduzierte Version wäre:

%Vor%

Sie sollten dann in der Lage sein, eine timeval-Struktur zu initialisieren:

%Vor%

Ich hoffe, das hilft ein bisschen ...

    
willsteel 12.10.2012 14:26
quelle

Tags und Links