我做了一个聊天软件,是在单文档工程下做的,前面的问题都行了,就是双击用户名,第一次能打开聊天界面,但是数据发送后接收不到,还有在第二次双击打开聊天界面的时候,提示套接字绑定失败,希望大家提供帮助,非常急,老师明天检查毕业设计,救济!!!谢谢!!!
void CChat::OnBtnSend()  
{
// TODO: Add your control notification handler code here
UpdateData(true);
  if(m_send==_T(""))
{  AfxMessageBox("发送消息不能为空!");
  GetDlgItem(IDC_EDIT_SEND)->SetFocus();
  return;
}
DWORD dwIP;
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
SOCKADDR_IN addrTo;
  addrTo.sin_family=AF_INET;
addrTo.sin_port=htons(6000);
  addrTo.sin_addr.S_un.S_addr=htonl(dwIP);
  CString strSend;
  GetDlgItemText(IDC_EDIT_SEND,strSend);
sendto(m_socket,strSend,strSend.GetLength()+1,0,
(SOCKADDR*)&addrTo,sizeof(SOCKADDR));
  SetDlgItemText(IDC_EDIT_SEND,"");
}
/*套接字初始换函数*/BOOL CChat::InitSocket()
{
/*创建套接字*/
m_socket=socket(AF_INET,SOCK_STREAM,0);
if(INVALID_SOCKET==m_socket)//判断套接字是否创建失败
{
MessageBox("套接字创建失败!");
return FALSE;
}
SOCKADDR_IN addrSock;
addrSock.sin_family=AF_INET;//指定地址族
addrSock.sin_port=htons(6000);//设定端口
addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//指定IP地址。接受发送到本地任一ip地址的数据
/*进行绑定*/
int retval;
retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
if(SOCKET_ERROR==retval)
{
closesocket(m_socket);
MessageBox("套接字绑定失败!");  return FALSE;
}
listen(m_socket,5);
return TRUE;
}BOOL CChat::OnInitDialog()
{
InitSocket();
RECVPARAM *pRecvParam=new RECVPARAM;
pRecvParam->sock=m_socket;
pRecvParam->hwnd=m_hWnd;
HANDLE hThread=CreateThread(NULL,0,RecvProc,(LPVOID)pRecvParam,0,NULL);//创建线程
CloseHandle(hThread);
return TRUE;}DWORD WINAPI CChat::RecvProc(LPVOID lpParameter)
{
SOCKET sock=((RECVPARAM*)lpParameter)->sock;
HWND hwnd=((RECVPARAM*)lpParameter)->hwnd;SOCKADDR_IN addrfrom;//套接字地址结构变量,接受发送端的地址信息
int len=sizeof(SOCKADDR);//返回的地址结构体的变量
char recvBuf[200];
char tenBuf[300];int retval;
while(TRUE)
{
retval=recvfrom(sock,recvBuf,200,0,(SOCKADDR*)&addrfrom,&len);
  if(SOCKET_ERROR==retval)
break;
sprintf(tenBuf,"%s说:%s",inet_ntoa(addrfrom.sin_addr),recvBuf);//取出发送端的IP地址,将IP地址的显示采用点分十进制表示
  ::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tenBuf);
}
return 0;}void CChat::OnRecvData(WPARAM wParam,LPARAM lParam)
{
  CString str=(char*)lParam;//
CString strTrap;//接受以前数据
GetDlgItemText(IDC_EDIT_RECV,strTrap);
str+="\r\n";
str+=strTrap;
  SetDlgItemText(IDC_EDIT_RECV,str);}