2013-01-19 88 views
1

以下ocaml的錯誤LWT

let new_socket() = Lwt_unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in 
let socket_address = Network.make_address "127.0.0.1" 7777 in 
let listening_socket = new_socket() in 
Lwt_unix.setsockopt listening_socket Unix.SO_REUSEADDR true; 
Lwt_unix.bind listening_socket socket_address; 

結果轉換成這樣的錯誤:

錯誤:正確性:2:remote_client:0:設置

Unix.Unix_error(Unix.EADDRINUSE, "bind", "") 
Raised at file "src/core/lwt.ml", line 782, characters 22-23 
Called from file "src/unix/lwt_main.ml", line 34, characters 8-18 
Called from file "src/oUnit.ml", line 597, characters 6-10` 

最後線路出現故障時授予的綁定,想法爲什麼,如何通過這個?

回答

3

錯誤作了明確規定:您要綁定到地址已經在使用,套接字已經綁定在端口7777

要了解一個函數查找所提出的Unix_error的代碼相應的C unix函數的手冊,在這種情況下爲bind(2)

+0

我需要這個端口,那我該怎麼辦? – blackmath

+1

如果你需要這個端口,試着弄清楚哪個進程正在使用它,並停止它。如果您需要運行該進程,則可以嘗試更改其設置以使用不同的端口,從而釋放該端口以供自己使用。如果你不能做到上述,嘗試找到一臺不同的計算機來運行你的程序。 – didierc