有关TCP客户端程序的建立问题
我首先创建一个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




