2015-12-19 69 views
-1

accept(sockfd,(struct sockaddr *)&srv,sizeof(srv))通過接受做一個指向整數的論點三無鑄造接受()傳遞參數3接受做一個指向整數,未作鑄

我想使用接受功能,但我得到這個錯誤。 有人可以幫我嗎? 我在網絡編程新

+5

閱讀[接受男人頁(http://linux.die.net/man/2/accept) 。 「addrlen參數是一個值結果參數:調用者必須初始化它以包含由addr指向的結構的大小(以字節爲單位);返回時它將包含對等地址的實際大小。」也就是說,第三個參數需要是一個指針。 – kaylum

回答

4

閱讀man page,它說

的addrlen中參數是一個值結果參數:調用者必須初始化它包含的大小(以字節爲單位)的結構,指出由addr;在返回時它將包含對等地址的實際大小。

所以,你需要這樣的事情(從bind() man page採取代碼):

socklen_t peer_addr_size; 
peer_addr_size = sizeof(struct sockaddr_un); 
    cfd = accept(sfd, (struct sockaddr *) &peer_addr, 
       &peer_addr_size);