初接觸UNIX的人都會在教材中得到這樣的信息:文件描述符0、1和2分別代表stdin、stdout和stderr。所以,在我們自己的程序中往往都會避開這幾個“標準”的描述符。對於網絡的操作,一般在connect(或accept)後都會判斷Socket描述符是否大於0來決定網絡連接是否建立。
問題偏偏就出在這裏。
一個SocketServer程序,accept客戶端連接成功後創建一新的線程,將accept的返回值當作該線程的參數。在該線程中和客戶端交互,執行所需的操作。
在客戶端執行連接操作後,發現連接頻頻被Server斷開,百思不解其意。
經過調試,方纔發現在accept執行成功後返回值竟然會是0。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
奇怪之餘,卻又無可奈何,修改Server端程序後問題解決。
操作系統:SunOS 5.8 編譯器: SUNWorkspace Pro4.0 CC