急急急!用socket函数创建SOCKET后程序多了两个线程,这是什么回事啊? 如题!我在另一台机器上又没有这样的问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SOCKET CServiceManager::CreateServerSocket(unsigned long _uIP, unsigned short _nPort){ unsigned long uIP = ::htonl(_uIP); SOCKADDR_IN addr; unsigned short uPort = ::htons(_nPort); SOCKET sServer; addr.sin_addr.s_addr = uIP; addr.sin_port = uPort; addr.sin_family = AF_INET; sServer = socket(AF_INET, SOCK_STREAM, 0); if(sServer == INVALID_SOCKET) { CString strError; TRACE(_T("无法创建Socket, 错误代码:%ld"), ::WSAGetLastError()); strError.Format(S_CREATESOCKET_FAILED, ::WSAGetLastError()); ::AfxMessageBox(strError); return INVALID_SOCKET; } // 绑定SOCKET到对应的IP和PORT if(bind(sServer, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { CString strError; TRACE(_T("无法绑定Socket到%ld端口, 错误代码:%ld"), _nPort, ::WSAGetLastError()); strError.Format(S_BINDSOCKET_FAILED, _nPort, ::WSAGetLastError()); ::AfxMessageBox(strError); return INVALID_SOCKET; }....执行sServer = socket(AF_INET, SOCK_STREAM, 0);之前是只有一个线程,执行之后就多了两个了。在if那里设断点我试过。这个程序我在别的机器上运行就没这样的问题,就是在我家的机器上运行才这样。我怀疑是中了病毒或木马。但我又不知道哪些木马和病毒会这样做,把线程加入到我的程序里。 哈, 有可能是黑客替换了你的 ws2_32.dll 你调用的是黑客DLL, 他在内部创建线程后再引导自真正的 ws2_32.dll. 小心哦, 要爆炸了:) 问题,我终于找到了。原来是KV3000搞的鬼!当调用socket时就会加载了一个system32目录下的KVWSP.DLL文件,该文件是KV3000的,我问过江民公司了他们说这个文是用于监视网页病毒。就是它给创建了两个线程。我的分数如何处理啊? VC求数组元素个数 怎么做一个中央监护系统那样的界面? 鼓足勇气提出的小问题(关于SQL数据显示) 在图形处理方面的 API有那些? 如何改变控件的字体颜色和背景颜色? 全屏幕 怎样判别一个窗口是不是子窗口?(在线等待) GDI+环境配置错误 如何让VC程序显示阿拉伯文 如何开发自己的opengl32.dll WIN2000下怎么实现ATX电源关机? BBS水木清华站怎样登上去?
{
unsigned long uIP = ::htonl(_uIP);
SOCKADDR_IN addr;
unsigned short uPort = ::htons(_nPort);
SOCKET sServer; addr.sin_addr.s_addr = uIP;
addr.sin_port = uPort;
addr.sin_family = AF_INET;
sServer = socket(AF_INET, SOCK_STREAM, 0);
if(sServer == INVALID_SOCKET)
{
CString strError;
TRACE(_T("无法创建Socket, 错误代码:%ld"), ::WSAGetLastError());
strError.Format(S_CREATESOCKET_FAILED, ::WSAGetLastError());
::AfxMessageBox(strError);
return INVALID_SOCKET;
} // 绑定SOCKET到对应的IP和PORT
if(bind(sServer, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
{
CString strError;
TRACE(_T("无法绑定Socket到%ld端口, 错误代码:%ld"), _nPort, ::WSAGetLastError());
strError.Format(S_BINDSOCKET_FAILED, _nPort, ::WSAGetLastError());
::AfxMessageBox(strError);
return INVALID_SOCKET;
}
....执行sServer = socket(AF_INET, SOCK_STREAM, 0);之前是只有一个线程,
执行之后就多了两个了。在if那里设断点我试过。
这个程序我在别的机器上运行就没这样的问题,就是在我家的机器上运行才这样。我怀疑是中了病毒或木马。但我又不知道哪些木马和病毒会这样做,把线程加入到我的程序里。
于监视网页病毒。就是它给创建了两个线程。我的分数如何处理啊?