sunlock 发表于 2010-11-16 09:06:57

一个windows下socket操作的问题,大家遇到过吗

我的服务器,运行在windows下,有时发现:
(1)有时创建socket出现无内存的错误,实际上这个时候我的进程内存占用不大,系统可用内存也还有很多
(2)有时创建socket后bind 出现 10038的错误

实在不知道是什么原因。大家遇到过这样的错误吗?

请高人指点迷津。谢谢

modern 发表于 2010-11-24 11:31:59

我没有遇到过问题1,贴一下你创建socket的代码吧,应该是用法问题。
第二个问题看下面
//
// MessageId: WSAENOTSOCK
//
// MessageText:
//
// An operation was attempted on something that is not a socket.
//
#define WSAENOTSOCK                      10038L

freeeyes 发表于 2010-11-24 14:02:33

MSDN:
由 Microsoft Winsock 实现将 Windows NT 错误"OBJECT_TYPE_MISMATCH"被映射到 Windows 套接字错误"WSAENOTSOCK"。"OBJECT_TYPE_MISMATCH"错误的一个可能的原因是这种方式编写的应用程序与不止一次关闭一个给定的句柄。错误是在多处理器计算机上发生的可能性更大。

注意,它们与他们完成时关闭其句柄的所有将被要求使用 Win32 API 集编程的应用程序开发人员。 但是,如果应用程序是写入,并且与 C 运行时库链接,C 运行时代码的一些自动清理资源 (如线程的句柄。如果应用程序开发人员专门,关闭线程句柄,然后调用终止线程 _endthread(),_endthread 例程也试图关闭同一个句柄。如果该句柄已被重新使用在该点 (由另一个线程),它将成为无效的线程,并有可能会导致错误,如"INVALID_HANDLE"或"OBJECT_TYPE_MISMATCH。

sunlock 发表于 2010-11-26 12:03:40

回复 2# modern

如果是用法问题,怎么是偶尔出错呢?
如果是必错 才是吧
页: [1]
查看完整版本: 一个windows下socket操作的问题,大家遇到过吗