16,471
社区成员
发帖
与我相关
我的任务
分享
if(SOCKET_ERROR == WSAAsyncSelect(m_socket,m_hWnd,UM_SOCK,FD_READ))
{
MessageBox("注册网络读取事件失败!");
return FALSE;
}
void CChatDlg::OnBtnSend()
{
// TODO: Add your control notification handler code here
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));
/*
CString st;
GetDlgItemText(IDC_EDIT_RECV,st);
strSend+="\r\n";
st+="你说 : ";
st+=strSend;
SetDlgItemText(IDC_EDIT_RECV,st);
SetDlgItemText(IDC_EDIT_SEND,"");
*/
//获取本机名
char name[255];
HOSTENT* hostent;
if(SOCKET_ERROR==gethostname(name,sizeof(name)))
{
MessageBox("获取主机名失败!");
return;
}
//获取本机IP
hostent=gethostbyname(name);
CString st;
GetDlgItemText(IDC_EDIT_RECV,st);
strSend+="\r\n";
st+=inet_ntoa(*(in_addr *)hostent->h_addr_list[0]);
st+=" 说: ";
st+=strSend;
SetDlgItemText(IDC_EDIT_RECV,st);
SetDlgItemText(IDC_EDIT_SEND,"");
//让滚动条始终处在底端
CEdit *pedit=(CEdit*)GetDlgItem(IDC_EDIT_RECV);
int nline=pedit-> GetLineCount();
pedit-> LineScroll(nline-1);
}
这是我以前写的