所有源码:CWorkSocket.cpp:#include "stdafx.h"
#include "CWorkSocket.h"
#pragma comment(lib,"strmbasd.lib")CWorkSocket::CWorkSocket()
{
WSADATA Data;
if(WSAStartup(MAKEWORD(1, 1), &Data) != 0)
AfxMessageBox("WSAStartup failed !"); //创建套接字
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sListen == INVALID_SOCKET)
{
AfxMessageBox("Filed socket()");
return;
} //填充sockaddr_in结构
locate.sin_family = AF_INET;
locate.sin_port = 6969;
locate.sin_addr.S_un.S_addr = INADDR_ANY;}CWorkSocket::~CWorkSocket()
{
}bool CWorkSocket::WaitConnect()
{
//绑定此套接字到本地地址
if(bind(sListen, (LPSOCKADDR)&locate, sizeof(locate)) == SOCKET_ERROR)
{
AfxMessageBox("Filed bind()");
return 0;
}
//进入监听模式
if(listen(sListen, 3) == SOCKET_ERROR)
{
AfxMessageBox("Filed listen()");
return 0;
}
//以下接受新连接,分配新套接字,(可在此家循环以连续等待处理链接请求)
int a = sizeof(remoteAddr);
sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &a);
if(sClient != 0)
{
AfxMessageBox("accept()成功");
return 0;
}
        
        Receive();//应该会影响重画,大家专注accept问题吧!!
return 1;
}
bool CWorkSocket::Receive()
{
int nRecv = recv(sListen, (char *)&data.len, sizeof(data.len), 0);
if(nRecv ==0 || data.len>8)
{
AfxMessageBox("Failed recv(1)");
return false;
} nRecv = recv(sListen, (char *)&data.data, data.len, 0);
if(nRecv ==0)
{
AfxMessageBox("Failed recv(2)");
return false;
}
return true;
}CWorkSocket.h:typedef struct DATA{
unsigned long len;
char   data[8];
} DATA;class CWorkSocket
{
public:
CWorkSocket();
~CWorkSocket(); bool WaitConnect();
bool Send();
bool Receive();
public:
SOCKET sListen;
SOCKET sClient;
sockaddr_in remoteAddr;
sockaddr_in locate; DATA data;
};//////////////////////////////////////////////////
问题是:
调用WaitConnect()时出现问题,调试时的确卡在了那,但是用客户端连接不能成功!