您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FD_SET函数代码示例

51自学网 2021-06-01 20:40:55
  C++
这篇教程C++ FD_SET函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FD_SET函数的典型用法代码示例。如果您正苦于以下问题:C++ FD_SET函数的具体用法?C++ FD_SET怎么用?C++ FD_SET使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FD_SET函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: main

int main() {	fd_set master;	/* temp file descriptor list for select() */	fd_set read_fds;	fd_set write_fds;	struct sockaddr_in serv_addr, cli_addr;	int sockfd, newsockfd, fdmax, i;   /* int fdmax is the maximum file descriptor number */	socklen_t clilen;	char buf[1024];	/* clear the master and temp sets */	FD_ZERO(&master);	FD_ZERO(&read_fds);	FD_ZERO(&write_fds);	if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)		perror("socket");	/* bind */	bzero((char *) &serv_addr, sizeof(serv_addr));	serv_addr.sin_family = AF_INET;	serv_addr.sin_addr.s_addr = INADDR_ANY;	serv_addr.sin_port = htons(1234);	if(bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)		perror("bind");	listen(sockfd, 10);	clilen = sizeof(cli_addr);	/* add the sockfd to the master set */	FD_SET(sockfd, &master);	/* keep track of the biggest file descriptor */	fdmax = sockfd; /* so far, it's this one*/	/*Main loop */	for( ; ; ) {	/* copy it */		read_fds = master;		write_fds = master;		struct timeval tv;		tv.tv_sec = 1;		tv.tv_usec = 0;		if(select(fdmax+1, &read_fds, &write_fds, NULL, NULL) < 0)			perror("select");		/*run through the existing connections looking for data to be read*/		if(fdmax >= OPEN_MAX){			perror("open_max");			return 1;		}		for(i = 0; i <= fdmax; i++) {			if(FD_ISSET(i, &read_fds)) {  /* we got one... */				printf("Server %d: read/n", i);					if(i == sockfd) {						if((newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen)) < 0)							perror("accept");						FD_SET(newsockfd, &master); /* add to master set */						printf("Server %d: accept new client %d/n", i, newsockfd);						/* keep track of the maximum */						fd[newsockfd] = -1;						if(newsockfd > fdmax) {							fdmax = newsockfd;						}					}					else {						/* handle data from a client */						memset(buf, 0, sizeof buf);						int size;						if((size = recv(i, buf, 1024, 0)) <= 0) {							continue;						}						else {							/* we got some data from a client*/							printf("Server %d: path %s/n", i, buf);							fd[i] = open(buf, O_RDONLY);							printf("Server %d: file desc %d/n", i, fd[i]);							if(fd[i] < 0){								memset(buf, 0, sizeof buf);								memcpy(buf,"file not exist", 14);								close(fd[i]);								if(send(i, buf, 1024, 0) < 0)									perror("send");								printf("Server %d: %s/n", i, buf);								close(i);//.........这里部分代码省略.........
开发者ID:pbondarenko,项目名称:testrepository,代码行数:101,


示例2: main

int main(int argc, char *argv[]){	struct sockaddr_in broadcast_adrs;	struct sockaddr_in from_adrs;	socklen_t from_len;	int sock, count = 0;	int broadcast_sw = 1;	fd_set mask, readfds;	struct timeval timeout;	int port = DEFAULT_PORT;	char username[L_USERNAME] = "JohnDou";	char s_buf[S_BUFSIZE], r_buf[R_BUFSIZE];	int strsize = 0;	packet r_packet;	/* コマンドライン引数のチェックおよび使用法の表示 */	if(argc != 3)	{		fprintf(stderr, "Usage: %s User_name, Port_number/n", argv[0]);		exit(EXIT_FAILURE);	}	sprintf(username, "%s", argv[1]);	port = atoi(argv[2]);	set_sockaddr_in_broadcast(&broadcast_adrs, (in_port_t)port);	sock = init_udpclient();	if(setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (void *)&broadcast_sw, sizeof(broadcast_sw)) == 1)	{		exit_errmesg("setsockopt()");	}	FD_ZERO(&mask);	FD_SET(sock, &mask);	// s_buf にHELLOパケットを格
C++ FD_TO_SOCKET函数代码示例
C++ FD_ISSET函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。