客户端中,recv(m_sockClient,strRecv,100,0); 执行不下去(一直卡在这句,感觉这句根本没执行)。自己将socket的函数封装成一个类。第一次接触,彻底蒙了。下边是自己写的类。看看哪里有问题:
//加载套接字库
void CClientSocket::AddWSA()
{
m_wVersionRequested = MAKEWORD( 1, 1 );
m_err = WSAStartup( m_wVersionRequested, &m_wsaData );
if ( m_err != 0 ) {
return;
}
if ( LOBYTE( m_wsaData.wVersion ) != 1 ||
HIBYTE( m_wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
}
//创建用于监听的套接字并连接
void CClientSocket::Create()
{
m_sockClient = socket(AF_INET,SOCK_STREAM,0);
//连接
m_addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
m_addrSrv.sin_family = AF_INET;
m_addrSrv.sin_port = htons(6000);
connect(m_sockClient, (SOCKADDR*)&m_addrSrv, sizeof(SOCKADDR));
HANDLE hThread = CreateThread(NULL,0,ThreadProc,this,0,NULL); //创建线程
CloseHandle(hThread); //关闭内核对象线
}
DWORD WINAPI CClientSocket::ThreadProc(LPVOID lpParameter)
{
CClientSocket *pClientSock= (CClientSocket *)lpParameter;
Sleep(1);
pClientSock->Recv();
return 0;
}
//接受消息
CString CClientSocket::Recv()
{
//等待服务器的消息到来
CString str;
char strRecv[100] = "\0";
m_length = sizeof(SOCKADDR);
Sleep(1);
recv(m_sockClient,strRecv,100,0);
str.Format("%s",strRecv);
return str;
}
//发送消息
void CClientSocket::Send(CString str)
{
char strSend[100] = "\0";
str.GetBuffer(str.GetLength());
strcpy(strSend,str);
send(m_sockClient,strSend,strlen(strSend)+1,0);
}
//关闭套接字
void CClientSocket::close()
{
closesocket(m_sockClient);
WSACleanup();
}
泛舟湖上清波郎朗
SMILET