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);
}
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
什么是HPSocket HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中[1]。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。 --- 百度百科 什么是异步, 什么是同步 "HPsocket所有组件都是异步的"我记得我开始学习HP的时候看见这行字我内心是崩溃的. 我觉得一些聊天室/游戏什么的才用异步,那么我专门写一些网关中间件什么的. 常用的是"应答式(同步)".即: 发送响应.类似http请, 但不会断开客户端 异步: 专门绑定一个事件, 收到的所有数据都投送给事件处理.适合聊天室/游戏等等 同步: 发送后等待响应, 获取响应数据后继续向下执行. 不需要绑定事件什么的.类似post, 不会断开连接就是了 为什么做这个玩意 记得是去年开始学习hp的, 当时在群"怪物乐园"询问如何实现同步. 与某(忘记了)个管理发生了py交易. 他热心的帮助我写了一个"PACK模型"的同步操作例子. 之后应用在一个项目中并不理想,因为PACK模型是整个包发送,有大小限制,还经常出现问题. 今年一个项目想用HP的PULL模型,所以自己分析那个大神给的例子.终于魔改封装出了一个"PULL模型"的同步操作类. 之前有易友希望我开源,其实我早就想开源了的,因为需要从项目中分离出来太麻烦了, 而且工作忙(上班),所以就拖到了今天
什么是HPSocket HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中[1]  。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。 --- 百度百科 什么是异步, 什么是同步 "HPsocket所有组件都是异步的"  我记得我开始学习HP的时候看见这行字我内心是崩溃的. 我觉得一些聊天室/游戏什么的才用异步,  那么我专门写一些网关中间件什么的.   常用的是"应答式(同步)".  即: 发送<--->响应.  类似http请, 但不会断开客户端 异步: 专门绑定一个事件, 收到的所有数据都投送给事件处理.    适合聊天室/游戏等等 同步: 发送后等待响应, 获取响应数据后继续向下执行.   不需要绑定事件什么的.  类似post, 不会断开连接就是了 为什么做这个玩意 记得是去年开始学习hp的,   当时在群"怪物乐园"询问如何实现同步.   与某(忘记了)个管理发生了py交易.   他热心的帮助我写了一个"PACK模型"的同步操作例子. 之后应用在一个项目中并不理想,  因为PACK模型是整个包发送,  有大小限制,  还经常出现问题. 今年一个项目想用HP的PULL模型,  所以自己分析那个大神给的例子.    终于魔改封装出了一个"PULL模型"的同步操作类. 之前有易友希望我开源,  其实我早就想开源了的,  因为需要从项目中分离出来太麻烦了, 而且工作忙(上班),  所以就拖到了今天

18,356

社区成员

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

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