草庐IT

checked_handle

全部标签

c++ - 阻塞 TCP 套接字 : “send()” return and error handling

根据这个答案Blockingsockets:when,exactly,does“send()”return?,阻塞套接字上的send()将在用户缓冲区被复制到内核缓冲区后立即返回。在传送失败的情况下(即,客户端未收到字节),调用send()的进程如何收到失败发生的通知? 最佳答案 POSIX/BSD套接字API不为TCP连接错误提供中断驱动的异步接口(interface)。由于TCP是可靠的,因此数据未交付的唯一原因是连接本身出现故障,无法完全交付。您必须通过在(可能是非阻塞的)套接字上执行某种同步操作来检测错误。最异步的机制是使用

c++ - WSARecv 有时会为与 IOCP 端口关联的套接字返回 "invalid handle (error no 6)"。 (C++)

我正在尝试编写一个可以同时支持多个客户端连接的服务器,所以我正在尝试使用IOCP来实现。因此,让我简要介绍一下我的代码流程,然后我可以解释我的问题。首先,服务器打开一个端口用于监听并等待新传入连接的“接受”调用。作为引用,我使用了与提到的相同的代码here所以它接受每个新的传入连接并返回一个新的套接字描述符(sd),然后它标记为非阻塞:arg=1;ioctlsocket(sd,FIONBIO,&arg);然后启用TCP_NODELAY:level=IPPROTO_TCP;optName=TCP_NODELAY;value=1;setsockopt(sd,level,optName,(c

C# 异步 TCP 套接字 : Handling buffer size and huge transfers

当使用阻塞TCP套接字时,我不必指定缓冲区大小。例如:using(varclient=newTcpClient()){client.Connect(ServerIp,ServerPort);using(reader=newBinaryReader(client.GetStream()))using(writer=newBinaryWriter(client.GetStream())){varbyteCount=reader.ReadInt32();reader.ReadBytes(byteCount);}}注意远程主机如何发送任意数量的字节。但是,当使用异步TCP套接字时,我需要创建一

sockets - NodeJS : What is the proper way to handling TCP socket streams ? 我应该使用哪个定界符?

据我了解here,“V8有一个分代垃圾收集器。随机移动对象。Node无法获取指向原始字符串数据的指针以写入套接字。”所以我不应该将来自TCP流的数据存储在字符串中,特别是当该字符串变得大于Math.pow(2,16)字节时。(希望我到现在为止都是对的..)那么处理来自TCP套接字的所有数据的最佳方法是什么?到目前为止,我一直在尝试使用_:_:_作为分隔符,因为我认为它在某种程度上是独一无二的,不会混淆其他东西。数据样本将是一些东西_:_:_可能是一个大文本_:_:_可能是成吨的行_:_:_越来越多的数据这是我尝试做的:net=require('net');varserver=net.c

ios - Realm 最佳实践 : How to handle asynchronous HTTP object update?

我有一个模型,它是一个swift对象。我从网络检索数据,然后我需要更新我的对象,但有不同的情况需要处理:我创建一个对象,获取数据,更新属性,将其保存在Realm我创建一个对象,将其保存在Realm中,获取数据,更新属性,再次保存我创建一个对象,将其保存在Realm中,开始获取数据,从Realm中删除它,接收数据,什么都不做。我是这样处理的:如果self.invalidated==false&self.realm==nil->更新self的属性如果self.invalidated==false&self.realm!=nil->在后台线程中从Realm中获取对象,设置属性,完成前在主线程

swift - Xcode 7.3, swift 2.2 : default initialiser selector (new compile-time check)

我正在将一些选择器迁移到Swift2.2,但我遇到了其中一个问题:代码:lethook=ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod("init"){//DefaultinitialiserpresenceQueryWasCreated=true}现在,Xcode想帮助我进行转换,但方式不对:代码:lethook=ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod(#selector(_NSEnumeratorType.init)){//Defaultini

nacos项目启动出现的bug Server check fail, please check server localhost ,port 9848 is available

启动nacos的时候发现客户端报错了[main]c.a.n.c.remote.client.grpc.GrpcClient  :Servercheckfail,pleasecheckserverlocalhost,port9848isavailable,error={}java.util.concurrent.TimeoutException:Waited3000milliseconds(plus15milliseconds,118500nanosecondsdelay)forcom.alibaba.nacos.shaded.io.grpc.stub.ClientCalls$GrpcFutur

iOS Swift : how to check if Object exists in an Array so I don't add it to it, 或用它重新创建 GMSMarker?

我一直在为iOSsdk使用gmaps并遇到这个问题:每次map平移或缩放时并完成(我使用的是委托(delegate)idleAtCameraPosition)在我的服务器端我比较map中心的坐标,以便标记它周围的地方。当它们距离中心坐标足够近(1公里)时,我将这些位置保存在“位置”对象数组中。我的问题是我无法避免将重复的对象添加到数组中,所以每次我平移map但不改变相机位置时,屏幕上的现有标记都会重新显示添加到Places数组。我尝试使用此代码,但它不起作用并且数组可以无限增长直到应用程序崩溃:if(!arrayProp.contains(place)){arrayProp.appen

C++和Swift : How are structs handled in C++ stack frames? struct继承的复杂性为什么Swift不支持struct继承?

在最近的一次开发者聚会上,简要讨论了Swift中的struct继承(或者更准确地说,Swift中缺少struct继承)的主题。我假设Swift不支持struct继承的原因是因为:struct是值类型值类型在堆栈帧之间复制继承意味着struct的大小可以变化(例如,如果Lorry继承自Vehicle和Lorry添加.weightCapacity然后Lorry将比Vehicle需要更多的空间)具有在编译时未知大小的值类型参数会使调用者的栈帧构造和被调用者访问数据变得复杂我假设正是由于这些复杂性,这可能会为涉及struct的每个函数调用添加额外的操作,从而降低性能,Swift不允许struc

iOS swift : Check string suffix

我有一个字符串数组,它们是我的应用程序包中的文件名。有些是PNG,有些是MOV。Swift中有没有检查字符串后缀的好方法? 最佳答案 使用hasSuffix和filter方法,如下所示:letfiles:[String]=["quick.txt","brown.mov","fox.exe","jumps.mov","over.jpg","the.txt","lazy.mov","dog.opt"]letmovs=files.filter{$0.hasSuffix(".mov")}println(movs)//Prints[brown