CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

有关TCP客户端程序的建立问题

楼主lele1013()2006-03-21 15:59:07 在 VC/MFC / 基础类 提问

我首先创建一个CTCPClient_CE类,由该类完成TCP客户端操作封装,然后在对话框中调用该类与TCP服务器端建立连接,并进行数据传输,最后再断开与TCP服务器的连接。  
      CTCPClient_CE类中提供一个方法SendData()用于象TCP服务器端进行发送数据,具体函数如下:  
      /*--------------------------------------------------------------------  
  【函数介绍】:   向服务器端发送数据  
  【入口参数】:   buf:待发送的数据  
                              len:待发送的数据长度  
  【出口参数】:   (无)  
  【返回     值】:   TRUE:发送数据成功;FALSE:发送数据失败  
  ---------------------------------------------------------------------*/  
  bool   CTCPClient_CE::SendData(const   char   *   buf   ,   int   len)  
  {  
  int   nBytes   =   0;  
  int   nSendBytes=0;  
   
  while   (nSendBytes   <   len)  
  {  
          nBytes   =   send(m_socket,buf+nSendBytes,len-nSendBytes,0);  
  if   (nBytes==SOCKET_ERROR   )  
  {  
  int   iErrorCode   =   WSAGetLastError();  
  //触发socket的Error事件  
  OnError(m_pOwnerWnd,iErrorCode);  
  //触发与服务器端断开连接事件  
  OnDisConnect(m_pOwnerWnd);  
  //关闭socket  
  Close();  
  return   FALSE;  
  }  
   
  nSendBytes   =   nSendBytes   +   nBytes;  
   
  if   (nSendBytes   <   len)  
  {  
          Sleep(1000);  
  }  
  }    
  return   TRUE;    
  }  
  然后我在CTCPClientDlg类中添加私有成员m_tcpClient,用于引用CTCPClient_CE类,添加发送数据按钮发送数据  
  代码如下:  
  void   CTCPClientDlg::OnBtnsenddata()    
  {  
  //   TODO:   Add   your   control   notification   handler   code   here  
  char   *   sendBuf;  
  int   sendLen=0;  
  UpdateData(TRUE);  
   
  sendLen   =   m_sendData.GetLength();  
  sendBuf   =   new   char[sendLen*2];  
  wcstombs(sendBuf,m_sendData,sendLen);  
  if   (!m_tcpClient.SendData(sendBuf,sendLen))  
  {  
  AfxMessageBox(_T("send   data   fail"));  
  }  
  delete[]   sendBuf;  
  sendBuf   =   NULL;  
  }  
   
  这段代码可以实现对字符串的发送,我想对文件进行发送应该如何修改程序,请各位指教,谢谢。 问题点数:20、回复次数:5Top

1 楼lele1013()回复于 2006-03-22 08:17:11 得分 0

为什么每人回复呢Top

2 楼lele1013()回复于 2006-03-22 11:18:21 得分 0

帮帮忙啊,高手都哪里去了呢Top

3 楼Mackz(在相互)回复于 2006-03-23 10:20:05 得分 20

m_tcpClient.SendData(sendBuf,sendLen)  
  就这样,文件内容读入sendBuf中,正确设置长度sendLen。  
   
  关键是发送前需要双方协议,先将文件名、大小等信息传送。另外,不要按照字符串处理,要按照二进制处理。Top

4 楼lele1013()回复于 2006-03-23 11:48:28 得分 0

请问可否给出这样的例子呢,或者在哪个网站上有类似的例子Top

5 楼lele1013()回复于 2006-03-25 15:06:56 得分 0

真的没有人会吗Top

相关问题

  • 有关TCP客户端程序的建立问题
  • 如何通过proxy,让自己的客户端程序和远程的服务端程序建立tcp连接,并且传送数据
  • 建立internet上的服务器/客户机形式的应用程序
  • 客户端程序怎样自动搜索服务端程序并建立连接?
  • SQLServer客户端默认协议NanePipe如何在程序中改为TCP/IP?
  • 服务端和客户端用建立tcp连接并通讯的例子
  • 服务端和客户端用建立tcp连接并通讯的例子
  • 用TCP协议如何建立与多个客户端的连接?
  • 如何用程序实现SQL客户端网络连接的配置?如采用TCP/IP or 命名管道
  • 在单机环境下,可否能用TCP实现客户机/服务器简单的聊天程序,

关键词

  • 数据
  • 服务器
  • tcp
  • ce
  • ctcpclient
  • 发送

得分解答快速导航

  • 帖主:lele1013
  • Mackz

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo