无法接收完整的字符串 [英] Cannot receive complete string
问题描述
我在21天内按照Sam21学习VC ++ 6.0编写了一个简单的套接字程序。我有一个服务器和一个客户端。我为发送按钮和接收编写了处理程序。当我发送一个字符串时,我只收到接收方字符串的第一个字母。我想收到整个字符串。这是我的代码:
发送::
<前lang =cs> void CsocketDlg :: OnClickedBsend()
{
// TODO:添加你的控制通知处理程序代码在这里
int iLen;
int iSent;
// 带变量的同步控件
UpdateData(TRUE);
// if(m_dSetThresholdFineDfLB.Create()== IDOK)
< span class =code-comment> // m_strMessage = m_dSetThresholdFineDfLB.m_sFrameLB;
/ / UpdateData(FALSE);
if (m_strMessage!= )
{
iLen = m_strMessage.GetLength();
// 发送消息
iSent = m_sConnectSocket.Send(LPCTSTR(m_strMessage) ),艾朗);
// 我们是否能够发送消息
if (iSent == SOCKET_ERROR)
{
}
else
{
// 将消息添加到列表框
m_ctlSent.AddString(m_strMessage );
// 将变量与控件同步
UpdateData(FALSE);
}
}
}
收到::
<前lang =cs> < span class =code-keyword> void CsocketDlg :: OnReceive( void )
{
char * pBuf = new char [ 1025 跨度>];
int iBufSize = 1024 ;
int iRcvd;
CString strRecvd;
// 收到消息
iRcvd = m_sConnectSocket.Receive(pBuf,iBufSize );
// 我们收到了什么吗?
if (iRcvd == SOCKET_ERROR)
{
}
else
{
// 截断消息的结尾
pBuf [iRcvd] = NULL;
// 将邮件复制到CString
strRecvd = pBuf;
// 将消息添加到收到的列表框
m_ctlRecvd.AddString( strRecvd);
// 将变量与控件同步
UpdateData(FALSE);
}
} 从使用unicode更改为在项目属性中使用多字节。
I wrote a simple socket program by following Sam21 learn VC++ 6.0 in 21 days. I have a server and a client. I wrote handlers for send button and receive. When I send a string I am receiving only first letter of the string on the receive side. I wanna receive the entire string. This is my code:
Send::
void CsocketDlg::OnClickedBsend()
{
// TODO: Add your control notification handler code here
int iLen;
int iSent;
//sync controls with variables
UpdateData(TRUE);
//if(m_dSetThresholdFineDfLB.Create()==IDOK)
//m_strMessage = m_dSetThresholdFineDfLB.m_sFrameLB;
//UpdateData(FALSE);
if(m_strMessage != " ")
{
iLen = m_strMessage.GetLength();
//send the message
iSent = m_sConnectSocket.Send(LPCTSTR(m_strMessage),iLen);
//were we able to send the message
if(iSent == SOCKET_ERROR)
{
}
else
{
//Add the message to the list box
m_ctlSent.AddString(m_strMessage);
//sync the variables with the control
UpdateData(FALSE);
}
}
}
Receive::
void CsocketDlg::OnReceive(void)
{
char *pBuf = new char[1025];
int iBufSize = 1024;
int iRcvd;
CString strRecvd;
//receive the message
iRcvd = m_sConnectSocket.Receive(pBuf, iBufSize);
//did we receive anything?
if(iRcvd == SOCKET_ERROR)
{
}
else
{
//truncate the end of the message
pBuf[iRcvd] = NULL;
//copy the message to CString
strRecvd = pBuf;
//add the message to the received list box
m_ctlRecvd.AddString(strRecvd);
//sync the variables with the controls
UpdateData(FALSE);
}
}
Changed from use unicode to use multi-byte in project properties.
这篇关于无法接收完整的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!