accept在while(true)里面变成了非阻塞的

问题描述

accept在while(true)里面变成了非阻塞的

while(cnt<244444){
SOCKET nSock=accept(server,&ClientAddr,&len);
cnt++;

    如果这样写,就是非阻塞的,会一直返回一个INVALID_SOCKET,但是如果
    把accept写在while的外面,就是阻塞的,(这个while是在子线程里面的,如果是在主线程就不会有这个问题)求大神解答一下!

解决方案

是不是其他地方设置了server句柄属性来控制阻塞非阻塞

解决方案二:

用 perror("accept") 看看出了什么错

解决方案三:

yong perror("accept") 看看出了什么错

解决方案四:

用 perror("accept") 看看出了什么错

解决方案五:

不行啊,perror("accept") 返回是 no errror, 但是accept 还是非阻塞的,每次返回一个INT_MAX 的SOCKET。

解决方案六:

试出来了,在主线程中,第一次是阻塞的,但是连接成功以后,就变成非阻塞了

解决方案七:

我怀疑是这样:
我在server上开了一个端口,然后用
while(true){
nSock=accept(server,NULL,NULL);
handl=CreateThread(NULL,0,RevcAndSend,&server,0,NULL);
}
去处理,
然后在client上面创建连接,第一个可以成功,第二个就失败了,是说
同一个client可以和一个server的同一个端口同时创建一个连接么,我试了不同的端口是可以的

时间: 2024-10-25 07:22:29

accept在while(true)里面变成了非阻塞的的相关文章

Python中使用select模块实现非阻塞的IO_python

Socket的英文原义是"孔"或"插座".作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意那样,像一个多孔插座.一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110

一个高可扩展的基于非阻塞IO的服务器架构

原文链接   译者:mailto:ahahage@163.com 目录 线程体系结构 反应堆模式 组件架构 接收器 分配器 分配器级别事件处理器 应用程序级别事件处理器 总结 参考资料 如果你被要求去写一个高可扩展性的基于JAVA的服务器,你很快就会决定使用JAVA NIO包.为了让服务器跑起来,你可能会花很多时间阅读博客和教程来了解线程同步需要NIO SELECTOR类以及处理一些常见的陷阱.本文描述了一个面向连接基于NIO的服务器的基本架构.本文会先看一下一个首选的线程模型然后讨论服务器的一

进度条-非阻塞异步处理。敬请高人指点,不胜感激。

问题描述 非阻塞异步处理.敬请高人指点,不胜感激. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>/c:set <!DOCTY

Python异步非阻塞IO多路复用Select/Poll/Epoll使用

来源:http://www.haiyun.me/archives/1056.html 有许多封装好的异步非阻塞IO多路复用框架,底层在linux基于最新的epoll实现,为了更好的使用,了解其底层原理还是有必要的. 下面记录下分别基于Select/Poll/Epoll的echo server实现. Python Select Server,可监控事件数量有限制: #!/usr/bin/python # -*- coding: utf-8 -*- import select import sock

Java网络编程从入门到精通(31):非阻塞I/O简介

在网络应用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O两种方式进行数据通讯.这两种方式并非互相排斥和互相取代.我们可以在平时的应用中单独采用其中一种通讯方式,也可以混合使用这两种通讯方式.在本文中就什么是非阻塞I/O以及为什么要使用这种通讯方式进行了介绍,在下一篇文章中给出了一个简单的例子来演示在网络应用中如何使用非阻塞I/O进行通讯. 一.什么是非阻塞I/O 我们可以将同步I/O称为阻塞I/O,非阻塞I/O称为异步I/O.在本书中采用了比较常用的叫法:同步I/O和非阻塞I/O.虽然它

非阻塞同步算法实战(一)

感谢trytocache投递本文. 前言 本文写给对ConcurrentLinkedQueue的实现和非阻塞同步算法的实现原理有一定了解,但缺少实践经验的朋友,文中包括了实战中的尝试.所走的弯路,经验和教训. 背景介绍 上个月,我被安排独自负责一个聊天系统的服务端,因为一些原因,我没使用现成的开源框架,网络那块直接使用AIO,收数据时,因为只会从channel里过来,所以不需要考虑同步问题:但是发送数据时,因为有聊天消息的转发,所以必需处理这个同步问题.AIO中,是处理完一个注册的操作后,再执行

面向连接的socket数据处理过程以及非阻塞connect问题

对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址,然后调用int listen(int sockfd, int backlog);进行监听.此时服务器socket允许客户端进行连接,backlog提示没被accept的客户连接请求队列的大小,系统决定实际的值,最大值定义为SOMAXCONN在头文件<sys/so

实现非阻塞套接字的一种简单方法 使用 JSSE 和 NIO 实现非阻塞通信的一种快速方法

简介: 尽管 SSL 阻塞操作――当读写数据的时候套接字的访问被阻塞――与对应的非阻塞方式相比提供了更好的 I/O 错误通知,但是非阻塞操作允许调用的线程继续运行.本文中,作者同时就客户端和服务器端描述了如何使用Java Secure Socket Extensions (JSSE) 和 Java NIO (新 I/O)库创建非阻塞的安全连接,并且介绍了创建非阻塞套接字的传统方法,以及使用JSSE 和 NIO 的一种可选的(必需的)方法. 阻塞,还是非阻塞?这就是问题所在.无论在程序员的头脑中多

阻塞模式和非阻塞模式

好文得转~~~ 何为阻塞?  从该网络通讯过程来理解一下何为阻塞 :  在以上过程中若连接还没到来,那么 accept 会阻塞 , 程序运行到这里不得不挂起, CPU 转而执行其他线程.  在以上过程中若数据还没准备好, read 会一样也会阻塞.  阻塞式网络 IO 的特点:多线程处理多个连接.每个线程拥有自己的栈空间并且占用一些 CPU 时间.每个线程遇到外部为准备好的时候,都会阻塞掉.阻塞的结果就是会带来大量的进程上下文切换.且大部分进程上下文切换可能是无意义的.比如假设一个线程监听一个端