哪里有creat()函数?
在MFC中,使用socket的顺序应该是:
AfxSocketInit();或者WSAStartup
然后使用CSocket socket;socket.Create(...);或者SOCKET sock=socket(...);bind(...);
你是从CSocket派生的呀:
CMySocket socket;
if(socket.Create(m_iPort))socket.Listen();
在这之前要调用一次AfxSocketInit();
估计是楼主把CSOCKET和SOCKET搞混了。
如何你是的类是继承CSOCKET,那么调用CRAET()是对的。如果你是用SOCKET那么你只能用
Socket(···);
补充:
你可以调用GetLastError()来获取一下错误代码。
WSAENOBUFS:
由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。
WSAENOBUFS
10055
(0x2747)
An
operation
on
a
socket
could
not
be
performed
because
the
system
lacked
sufficient
buffer
space
or
because
a
queue
was
full.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681391(v=vs.85).aspx
不太可能是系统缓冲区满导致的问题,而是socket队列已满导致的问题,socket端口是一种有限资源,如果使用不释放,迟早用光光。