int accept(int sockfd, void *addr, int *addrlen); sockfd是被监听的socket描述符,addr通常是一个指向sockaddr_in变量的指针,该变量用来存放提出连接请求服务的主机的信息(某台主机从某个端口发出该请求);addrten通常为一个指向值为sizeof(struct sockaddr_in)的整型指针变量。错误发生时返回一个-1并且设置相应...
struct sockaddr是通用的套接字地址。 struct sockaddr_in是internet环境下套接字的地址形式。 两者的长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr结构。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。 struct sockaddr_in servaddr; bind(socket_...
一个类型声明
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向 sockadd的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息, 在最后用进行类型转换就可以了bzero((char*)&mysock,sizeof(mysock));//初始化 mysock结构体名 mysock.sa_family=AF_INET; mysock.sin_addr.s_ad...
程序员应使用sockaddr_in来表示地址,sockaddr_in区分了地址和端口,使用更方便。 一般的用法为: 程序员把类型、ip地址、端口填充sockaddr_in结构体,然后强制转换成sockaddr,作为参数传递给系统调用函数 例子: intsockfd;structsockaddr_in servaddr; sockfd= Socket(AF_INET, SOCK_STREAM,0);/*填充struct sockaddr_in...
//创建sockaddr_in结构体变量struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充 serv_addr.sin_family = AF_INET; //使用IPv4地址 serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具体的IP地址 serv_addr.sin_port = htons(1234); //端口...
struct sockaddr_in servaddr; if (argc != 3) fprintf(stderr, "usage: cmd <IP> <port>\n"); if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { fprintf(stderr, "socket create error.\n"); exit(1); } bzero(&servaddr, sizeof(servaddr)); ...
voidinitlistensocket(intefd,shortport){structsockaddr_insin; intlfd = socket(AF_INET, SOCK_STREAM,0);fcntl(lfd, F_SETFL, O_NONBLOCK);//将socket设为非阻塞 memset(&sin,0,sizeof(sin));//bzero(&sin, sizeof(sin))sin.sin_family = AF_INET;sin.sin_addr.s_addr = INADDR_ANY;sin.sin...
struct sockaddr_in clientaddr, serveraddr; listenfd = socket(AF_INET, SOCK_STREAM, 0);//生成socket文件描述符 setnonblocking(listenfd);//把socket设置为非阻塞方式 epfd=epoll_create(256);//生成用于处理accept的epoll专用的文件描述符 ev.data.fd=listenfd;//设置与要处理的事件相关的文件描述符 ...
{ int i, sockfd; struct hostent *host; struct sockaddr_in serv_addr; if ((host = gethostbyname(argv[1])) == NULL) { printf("gethostbyname error\n"); exit(0); } printf("official name: %s\n\n", host->h_name); printf("address length: %d bytes\n\n", host->h_length); ...