socket通信编程一个无法找到答案的问题,求大神帮忙!

BirdFindBugs 2013-01-17 10:08:34
我做的是一个客户端和服务端通信的程序,但是每次每次连接成功后,服务端发送的消息,客户端只能接收到一个字符,例如我发送asdf,服务端只能接收到a,这是什么原因啊,我参考了好多程序都没找到问题所在,求大神帮忙分析下,感激不尽,在线等。

客户端发送消息事件代码如下:

void CChatClientDlg::OnBnClickedBtnSend() //发送按钮事件
{
// TODO: Add your control notification handler code here
int iSent;
UpdateData();
CString msgWords;
msgWords=m_sWords;
iSent=msgWords.GetLength();
m_ClientSocket->Send(LPCTSTR(msgWords),iSent); //向服务器发送消息
m_ListWords.AddString(_T("发送:")+msgWords);
m_ListWords.SetTopIndex(m_ListWords.GetCount()-1);
UpdateData(FALSE);
}
客户端接收事件如下:
void CChatServerDlg::OnReceive()
{
//接收客户端发来的信息
char *szTemp=new char[1025];
int sizeTemp=1024;
int n = m_ServerSocket->Receive(szTemp,sizeTemp); //接收信息
szTemp[n] = NULL;
CString sTemp;
//sTemp.Format(_T("收到:%s"),szTemp);
sTemp = szTemp;
m_ListWords.AddString(sTemp); //显示信息
m_ListWords.SetTopIndex(m_ListWords.GetCount() - 1);
UpdateData(FALSE);
}
...全文
146 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jun20101106 2013-01-18
  • 打赏
  • 举报
回复
楼上说的非常正确,确实是那个原因,现在已经能够正常接收了,真是太感谢了
youngwolf 2013-01-18
  • 打赏
  • 举报
回复
你是unicode版本的程序,服务端是mbcs版本的程序。 99%的可能性。 都改为mbcs版本的试试(就光说网络编程这一块,mbcs版本更适合一点,unicode版本下有个长度乘以2的问题)
YunXia98Li 2013-01-18
  • 打赏
  • 举报
回复
你判断以下Send的返回值,看send了多少字节。还找不到问题,参考这里,很多socket例子: http://download.csdn.net/detail/geoff08zhang/4571358
ouyh12345 2013-01-18
  • 打赏
  • 举报
回复
1、要判断返回值 2、看看传输的编码格式
jimette 2013-01-18
  • 打赏
  • 举报
回复

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧