2016-11-19 98 views
1

我有一個關於套接字編程的問題。linux:socket編程,accept(sd,null,null)

的accept()函數的原型如下:

int accept(int s, struct sockaddr *addr, socklen_t *addrlen); 

我想知道的是,當我在第二和第三個參數把空會發生什麼?

accept(sd, NULL, NULL); 

如果沒有關於sockaddr的信息,它可以正常運行嗎?如果是這樣,爲什麼?

回答

1

accept當返回時,addraddrlen參數用於填充在有關源(即,對等)的信息。通過爲addraddrlen被忽略,並且不返回任何信息。實際上,您並不需要知道對等方是誰開始網絡事務,但是有助於記錄或訪問控制。如果您沒有獲得accept的同行信息,但您稍後需要,則必須致電getpeername

+0

謝謝你的好意。這對我很有幫助。 –