利用GetLastError()获得的socket编程中常见错误
常数 |
值 |
描述 |
sckOutOfMemory |
7 |
内存不足 |
sckInvalidPropertyValue |
380 |
属性值无效。 |
sckGetNotSupported |
394 |
属性不可读。 |
sckSetNotSupported |
383 |
属性是只读的。 |
sckBadState |
40006 |
所请求的事务或请求本身的错误协议或者错误连接状态。 |
sckInvalidArg |
40014 |
传递给函数的参数格式不确定,或者不在指定范围内。 |
sckSuccess |
40017 |
成功。 |
sckUnsupported |
40018 |
不受支持的变量类型。 |
sckInvalidOp |
40020 |
在当前状态下的无效操作 |
sckOutOfRange |
40021 |
参数越界。 |
sckWrongProtocol |
40026 |
所请求的事务或请求本身的错误协议 |
sckOpCanceled |
1004 |
取消操作。 |
sckInvalidArgument |
10014 |
所请求的地址是广播地址,但未设置标记。 |
sckWouldBlock |
10035 |
套接字不成块,而指定操作将使之成块。 |
sckInProgress |
10036 |
制造块的 Winsock 操作在进行之中。 |
sckAlreadyComplete |
10037 |
完成操作。未进行制造块的操作。 |
sckNotSocket |
10038 |
描述符不是套接字。 |
sckMsgTooBig |
10040 |
数据报太大,不适于缓冲区的要求,因而被截断。 |
sckPortNotSupported |
10043 |
不支持指定的端口。 |
sckAddressInUse |
10048 |
地址在使用中。 |
sckAddressNotAvailable |
10049 |
来自本地机器的不可用地址。 |
sckNetworkSubsystemFailed |
10050 |
网络子系统失败。 |
sckNetworkUnreachable |
10051 |
此时不能从主机到达网络。 |
sckNetReset |
10052 |
在设置 SO_KEEPALIVE 时连接超时。 |
sckConnectAborted |
11053 |
由于超时或者其它失败而中止连接。 |
sckConnectionReset |
10054 |
通过远端重新设置连接。 |
sckNoBufferSpace |
10055 |
没有可用的缓冲空间。 |
sckAlreadyConnected |
10056 |
已连接套接字。 |
sckNotConnected |
10057 |
未连接套接字。 |
sckSocketShutdown |
10058 |
已关闭套接字。 |
sckTimedout |
10060 |
已关闭套接字。 |
sckConnectionRefused |
10061 |
强行拒绝连接。 |
sckNotInitialized |
10093 |
应首先调用 WinsockInit。 |
sckHostNotFound |
11001 |
授权应答:未找到主机。 |
sckHostNotFoundTryAgain |
11002 |
非授权应答:未找到主机。 |
sckNonRecoverableError |
11003 |
不可恢复的错误。 |
sckNoData |
10048错误,地址在使用中。
在创建Socket时,server创建两个Socket,一个用来接受用户请求,另一个却用来处理用户请求(accept返回的Socket).如果在程序编译时出现了此错误。首先应该查看accept返回的Socket是否处理完毕。假如是用多线程实现的,一个线程专门用来处理这个Socket,则应该把该Socket做为参数传进(线程处理函数里面),否则就会出现10048地址占用的错误。可以通过设置SetSockOpt()来设置Socket的状态
10049 错误正如描述是你用IP地址不是本机IP或是你最近动过电脑配置,使得你的IP不是你的本机IP,或是你登陆一个V6网站看看显示的IP是不是发生了变化