The Linux Programming Interface
里面讲解在同一个host 两个processes用socket通讯,
Server:
.....略
sfd = socket(AF_UNIX, SOCK_STREAM, 0);
bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr_un));
cfd = accept(sfd, NULL, NULL);
while ((numRead = read(cfd, buf, BUF_SIZE)) > 0)
Client:
connect(sfd, (struct sockaddr *) &addr,sizeof(struct sockaddr_un));
write(sfd, buf, numRead);
accept()会回传cfd这个新的descriptor来跟client的sfd进行连线。
想请问为什么server端的sfd不能同时listen跟read/write,一定要在产一个新的cfd?
有没有比较直观的理解?
谢谢