利用GetLastError()获得的socket编程中常见错误
常数描述
sckOutOfMemory7内存不足
sckInvalidPropertyValue380属性值无效。
sckGetNotSupported394属性不可读。
sckSetNotSupported383属性是只读的。
sckBadState40006所请求的事务或请求本身的错误协议或者错误连接状态。
sckInvalidArg40014传递给函数的参数格式不确定,或者不在指定范围内。
sckSuccess40017成功。
sckUnsupported40018不受支持的变量类型。
sckInvalidOp40020在当前状态下的无效操作
sckOutOfRange40021参数越界。
sckWrongProtocol40026所请求的事务或请求本身的错误协议
sckOpCanceled1004取消操作。
sckInvalidArgument10014所请求的地址是广播地址,但未设置标记。
sckWouldBlock10035套接字不成块,而指定操作将使之成块。
sckInProgress10036制造块的 Winsock 操作在进行之中。
sckAlreadyComplete10037完成操作。未进行制造块的操作。
sckNotSocket10038描述符不是套接字。
sckMsgTooBig10040数据报太大,不适于缓冲区的要求,因而被截断。
sckPortNotSupported10043不支持指定的端口。
sckAddressInUse10048地址在使用中。
sckAddressNotAvailable10049来自本地机器的不可用地址。
sckNetworkSubsystemFailed10050网络子系统失败。
sckNetworkUnreachable10051此时不能从主机到达网络。
sckNetReset10052在设置 SO_KEEPALIVE 时连接超时。
sckConnectAborted11053由于超时或者其它失败而中止连接。
sckConnectionReset10054通过远端重新设置连接。
sckNoBufferSpace10055没有可用的缓冲空间。
sckAlreadyConnected10056已连接套接字。
sckNotConnected10057未连接套接字。
sckSocketShutdown10058已关闭套接字。
sckTimedout10060已关闭套接字。
sckConnectionRefused10061强行拒绝连接。
sckNotInitialized10093应首先调用 WinsockInit。
sckHostNotFound11001授权应答:未找到主机。
sckHostNotFoundTryAgain11002非授权应答:未找到主机。
sckNonRecoverableError11003不可恢复的错误。
sckNoData
10048错误,地址在使用中。
在创建Socket时,server创建两个Socket,一个用来接受用户请求,另一个却用来处理用户请求(accept返回的Socket).如果在程序编译时出现了此错误。首先应该查看accept返回的Socket是否处理完毕。假如是用多线程实现的,一个线程专门用来处理这个Socket,则应该把该Socket做为参数传进(线程处理函数里面),否则就会出现10048地址占用的错误。可以通过设置SetSockOpt()来设置Socket的状态