網路程式設計與多執行緒的應用--基於socket udp編寫一個簡單聊天程式
阿新 • • 發佈:2019-02-06
void CChatDlg::OnBnClickedButtonSend()
{
// TODO: Add your control notification handler code here
//獲取對方IP
CIPAddressCtrl* pIPAddress = ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS_SEND));
if (pIPAddress->IsBlank())
{
MessageBox(L"請先輸入對方IP地址!");
return;
}
DWORD dwIP;
pIPAddress->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);
int len =WideCharToMultiByte(CP_ACP,0,strSend,-1,NULL,0,NULL,NULL);
char *ptxtTemp =new char[len +1];
WideCharToMultiByte(CP_ACP,0,strSend,-1,ptxtTemp,len,NULL,NULL );
//傳送資料
sendto(m_socket, ptxtTemp , strlen(ptxtTemp) + 1, 0, (SOCKADDR*)&addrTo, sizeof(SOCKADDR));
delete[] ptxtTemp;
if (m_chatHeight++ >= 12)
{
m_chatContent.SetWindowText(L"");
m_chatHeight = 0;
}
//傳送我說的內容
WaitForSingleObject(m_hMutex, INFINITE);
CString strTemp("");
m_chatContent.GetWindowText(strTemp);
CString strMyContent = L"我說:" + strSend;
if (strTemp != "")
{
strTemp += "\r\n";
}
strTemp += strMyContent;
m_chatContent.SetWindowText(strTemp);
ReleaseMutex(m_hMutex);
SetDlgItemText(IDC_Edit_Send, L"");
}
{
// TODO: Add your control notification handler code here
//獲取對方IP
CIPAddressCtrl* pIPAddress = ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS_SEND));
if (pIPAddress->IsBlank())
{
MessageBox(L"請先輸入對方IP地址!");
return;
}
DWORD dwIP;
pIPAddress->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);
int len =WideCharToMultiByte(CP_ACP,0,strSend,-1,NULL,0,NULL,NULL);
char *ptxtTemp =new char[len +1];
WideCharToMultiByte(CP_ACP,0,strSend,-1,ptxtTemp,len,NULL,NULL );
//傳送資料
sendto(m_socket, ptxtTemp , strlen(ptxtTemp) + 1, 0, (SOCKADDR*)&addrTo, sizeof(SOCKADDR));
delete[] ptxtTemp;
if (m_chatHeight++ >= 12)
{
m_chatContent.SetWindowText(L"");
m_chatHeight = 0;
}
//傳送我說的內容
WaitForSingleObject(m_hMutex, INFINITE);
CString strTemp("");
m_chatContent.GetWindowText(strTemp);
CString strMyContent = L"我說:" + strSend;
if (strTemp != "")
{
strTemp += "\r\n";
}
strTemp += strMyContent;
m_chatContent.SetWindowText(strTemp);
ReleaseMutex(m_hMutex);
SetDlgItemText(IDC_Edit_Send, L"");
}