BOOL CChatDlg::initsocket()
{
SOCKET m_socket=socket(AF_INET,SOCK_DGRAM,17);
if(m_socket==INVALID_SOCKET)
{
MessageBox("套接字创建失败");
return FALSE;
}
SOCKADDR_IN sockaddr;
sockaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sockaddr.sin_family=AF_INET;
sockaddr.sin_port=htons(6512);
int len;
len=sizeof(SOCKADDR);
bind(m_socket,(SOCKADDR*)&sockaddr,len);
return TRUE;
}oninit{
initsocket();
TIAN *tian=new TIAN;
tian->sock=m_socket;
tian->hwnd=m_hWnd;
HANDLE handle=CreateThread(NULL,0,SockProc,(LPVOID)tian,NULL,NULL);
CloseHandle(handle);
}
线程函数
DWORD WINAPI CChatDlg::SockProc(LPVOID lpParameter)
{
SOCKET sock=((TIAN*)lpParameter)->sock;
HWND hwnd=((TIAN*)lpParameter)->hwnd;
//delete lpParammeter;
SOCKADDR_IN addrfrom;
int len=sizeof(SOCKADDR);
char recvbuf[200];
char tempbuf[200];
int recv;
while(TRUE)
{
recv=recvfrom(sock,recvbuf,200,0,(SOCKADDR*)&addrfrom,&len);
if(recv==SOCKET_ERROR)
{
AfxMessageBox("套接字接受失败");
break;
}
sprintf(tempbuf,"%s say: %s",inet_ntoa(addrfrom.sin_addr),recvbuf);
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempbuf); }
return 0;}
{
SOCKET m_socket=socket(AF_INET,SOCK_DGRAM,17);
if(m_socket==INVALID_SOCKET)
{
MessageBox("套接字创建失败");
return FALSE;
}
SOCKADDR_IN sockaddr;
sockaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sockaddr.sin_family=AF_INET;
sockaddr.sin_port=htons(6512);
int len;
len=sizeof(SOCKADDR);
bind(m_socket,(SOCKADDR*)&sockaddr,len);
return TRUE;
}oninit{
initsocket();
TIAN *tian=new TIAN;
tian->sock=m_socket;
tian->hwnd=m_hWnd;
HANDLE handle=CreateThread(NULL,0,SockProc,(LPVOID)tian,NULL,NULL);
CloseHandle(handle);
}
线程函数
DWORD WINAPI CChatDlg::SockProc(LPVOID lpParameter)
{
SOCKET sock=((TIAN*)lpParameter)->sock;
HWND hwnd=((TIAN*)lpParameter)->hwnd;
//delete lpParammeter;
SOCKADDR_IN addrfrom;
int len=sizeof(SOCKADDR);
char recvbuf[200];
char tempbuf[200];
int recv;
while(TRUE)
{
recv=recvfrom(sock,recvbuf,200,0,(SOCKADDR*)&addrfrom,&len);
if(recv==SOCKET_ERROR)
{
AfxMessageBox("套接字接受失败");
break;
}
sprintf(tempbuf,"%s say: %s",inet_ntoa(addrfrom.sin_addr),recvbuf);
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempbuf); }
return 0;}
IP,端口号对应正确否?
还有你的提示信息也太少了点吧?
if(!AfxSocketInit())
{
AfxMessageBox("加载套接字库失败");
}
没有加载出错
void CChatDlg::OnSend()
{
// TODO: Add your control notification handler code here
DWORD dwip;
//SOCKET sock=socket(AF_INET,SOCK_DGRAM,0);
((CIPAddressCtrl*)GetDlgItem(IDC_IPADDR))->GetAddress(dwip);
SOCKADDR_IN sockto;
sockto.sin_addr.S_un.S_addr=htonl(dwip);
sockto.sin_family=AF_INET;
sockto.sin_port=htons(6512);
CString str;
GetDlgItemText(IDC_MSGSEND,str);
sendto(m_sock,str,str.GetLength()+1,0,(SOCKADDR*)&sockto,sizeof(SOCKADDR));
SetDlgItemText(IDC_MSGSEND,"");