net.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 58 行
C
58 行
#include <u.h>#include <libc.h>#include <thread.h>#include <sunrpc.h>typedef struct Arg Arg;struct Arg{ int fd; char adir[40]; SunSrv *srv;};static voidsunNetListen(void *v){ int fd, lcfd; char ldir[40]; Arg *a = v; for(;;){ lcfd = listen(a->adir, ldir); if(lcfd < 0) break; fd = accept(lcfd, ldir); close(lcfd); if(fd < 0) continue; if(!sunSrvFd(a->srv, fd)) close(fd); } free(a); close(a->fd);}intsunSrvNet(SunSrv *srv, char *addr){ Arg *a; a = emalloc(sizeof(Arg)); if((a->fd = announce(addr, a->adir)) < 0) return -1; a->srv = srv; proccreate(sunNetListen, a, SunStackSize); return 0;}intsunSrvAnnounce(SunSrv *srv, char *addr){ if(strstr(addr, "udp!")) return sunSrvUdp(srv, addr); else return sunSrvNet(srv, addr);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?