0
私は以下のexample codeを使ってサーバをコーディングしようとしていますが、特にこれらの記述に問題があります。CソケットプログラミングのAccept()
int Accept(int s, struct sockaddr *addr, socklen_t *addrlen)
{
int rc;
if ((rc = accept(s, addr, addrlen)) < 0)
unix_error("Accept error");
return rc;
}
...
socklen_t clientlen = sizeof(struct sockaddr_storage);
int connectFd = Accept(listenfd, (SA *)&clientaddr, &clientlen)
私はSAを使用した場合、それは次のように言って、エラーを引き上げます:
server.c:175:36: error: ‘SA’ undeclared (first use in this function)
connectFd = accept(listenFd, (SA * )&clientaddr, &c);
server.c:175:36: note: each undeclared identifier is reported only once for each function it appears in server.c:175:40: error:
expected expression before ‘)’ token
connectFd = accept(listenFd, (SA *) &clientaddr, &c);
server.c:175:18: error: too few arguments to function ‘accept’
connectFd = accept(listenFd, (SA *)&clientaddr, &c);
は、この問題を解決する方法はありますか?
私はデータ型として 'SA'を見たことがありませんPOSIXまたはCの標準コンテキストのいずれかで指定します。どうやら、それは 'csapp.h'ヘッダファイルのものです。どのように定義されていますか?それはマクロですか? – Downvoter
リンクの例のため、clientaddrのデータ型は "struct sockaddr_storage"です。それをキャストすることは安全でしょうか? – user287474
ああ、私はいくつかの掘りをしてみましょう。 – user287474