2010-06-13 3 views
2

J'ai écrit un serveur http factice comme exercice dans F #. J'utilise Mono 2.4.4 sous Ubuntu 10.04 x86_64, avec MonoDevelop.F # Problème asynchrone

Le code suivant ne peut pas compiler avec l'erreur:

Error FS0039: The field, constructor or member 'Spawn' is not defined (FS0039) 

Quelqu'un pourrait-il essayer de VisualStudio s'il vous plaît, je ne sais pas si cela est un problème Mono ou mon problème.

J'ai essayé plusieurs exemples asynchrones du livre F #, et tous produisent des messages similaires sur les méthodes Async. *.

Merci,

Chris.

#light 

open System 
open System.IO 
open System.Threading 
open System.Net 
open System.Net.Sockets 
open Microsoft.FSharp.Control.CommonExtensions 

printfn "%s" "Hello World!" 

let headers = System.Text.Encoding.ASCII.GetBytes("HTTP/1.0 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 37\r\nDate: Sun, 13 Jun 2010 05:30:00 GMT\r\nServer: FSC/0.0.1\r\n\r\n") 
let content = System.Text.Encoding.ASCII.GetBytes("<html><body>Hello World</body></html>") 

let serveAsync (client : TcpClient) = 
    async { let out = client.GetStream() 
      do! out.AsyncWrite(headers) 
      do! Async.Sleep 3000 
      do! out.AsyncWrite(content) 
      do out.Close() 
      } 

let http_server (ip, port) = 
    let server = new TcpListener(IPAddress.Parse(ip),port) 
    server.Start() 
    while true do 
     let client = server.AcceptTcpClient() 
     printfn "new client" 
     Async.Spawn (serveAsync client) 

http_server ("0.0.0.0", 1234) 

Répondre