UINT CClientDlg::Conn(void *p)//此处的void *p是传的一个窗口指针
{
if(m_hSocket)//如果已经创建,先关闭
{
closesocket(m_hSocket);
        m_hSocket=NULL;
}
else
{
m_hSocket=socket(AF_INET,SOCK_STREAM,0);
ASSERT(m_hSocket!=NULL);//
} CString SIP;
CString strError;
CClientDlg *pWnd=(CClientDlg *)p;
pWnd->GetDlgItemText(IDC_IPADDRESS1,SIP);
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=inet_addr(SIP.GetBuffer(0));
addr.sin_port=htons(6000); int error=0;
CPublic::ret=connect(pWnd->m_hSocket,(LPSOCKADDR)&addr,sizeof(addr));
if(CPublic::ret==SOCKET_ERROR)
{
pWnd->SetDlgItemText(IDC_EDIT_RECV,"服务器端没开启!");
closesocket(pWnd->m_hSocket);
return -1;
}
else
{
pWnd->SetDlgItemText(IDC_EDIT_RECV,"已连上服务器!");
} return 0;
}
这些代码我是写在一个button中的,程序运行时我必须连续点两次该button才能与服务器建立连接,也就是说点第一次会提示"服务器端没开启",此时连接确实没有建立,我要再点一次才会提示"已连上服务器",这个时候才能传输数据~~~~~为什么会这样?该怎么处理?