请大家帮我看看这个类,要改进的地方
//Ttestcnhclass.h
#include <winsock.h>
#include <iostream.h>
#pragma comment(lib,"ws2_32")
class CTestcnhc
{
protected:
SOCKET m_hsocket; //套接字
sockaddr_in m_addr; //·IP
UINT m_uPort; //·端口
bool m_bWSAStartup;
public:
int res;
public:
CTestcnhc(); //¹¹Ô캯Êý;
~CTestcnhc(); //Îö¹¹º¯Êý;
public:
bool Recvdata(char* buf); //½ÓÊÕÊý¾Ý;
int connectserver(char* ip,UINT nPort);//Á¬½Ó·þÎñÆ÷;
bool Senddata(char *buf);
};
#include "stdafx.h"
#include "Ttestcnhclass.h"
#include <string.h>
#include <stdio.h>
//构造函数
CTestcnhc::CTestcnhc()
:m_hsocket(NULL),m_uPort(NULL),m_bWSAStartup(TRUE)
{
WORD wVersion;
WSADATA wsaData;
wVersion=(MAKEWORD(1,1));
if (WSAStartup(wVersion,&wsaData)==0)
{
m_bWSAStartup=TRUE;
res=0;
}
else
{
m_bWSAStartup=FALSE;
res=WSAGetLastError();
}
}
//析构函数
CTestcnhc::~CTestcnhc()
{
if(m_bWSAStartup){};
WSACleanup();
closesocket(m_hsocket);
WSACleanup();
getchar();
}
//连接服务器
int CTestcnhc::connectserver(char *ip,UINT nPort)
{
if(!m_bWSAStartup)
{
::MessageBox(NULL,"winsock ³õʼ»¯´íÎó!","´íÎóÌáʾ",NULL);
return 1;
}
if(m_hsocket!=NULL)
{
m_bWSAStartup=FALSE;
return 1;
}
if(m_hsocket==NULL)
{
m_hsocket=socket(AF_INET,SOCK_STREAM,0);
(m_hsocket!=NULL);
}
m_addr.sin_family=AF_INET;
m_addr.sin_addr.s_addr=inet_addr(ip);
m_addr.sin_port=htons(nPort);
int rec=connect(m_hsocket,(struct sockaddr*)&m_addr,sizeof(&m_addr)==SOCKET_ERROR);
if(rec==SOCKET_ERROR)
{
m_hsocket=NULL;
m_bWSAStartup=FALSE;
return 1;
}
return 0;
}
//发送数据
bool CTestcnhc::Senddata(char *buf)
{
if(!m_bWSAStartup)
{
::MessageBox(NULL,"winsock ³õʼ»¯´íÎó!","´íÎóÌáʾ",NULL);
return 1;
}
if(buf==NULL || m_hsocket==INVALID_SOCKET) return(FALSE);
char *sendp=NULL;
cin>>sendp;
//memset(buf,0,sizeof(char)*100);
sprintf(buf,"operation>>%s\r\n",sendp);
int len = strlen(buf);
send(m_hsocket,sendp,len,0);
return(TRUE);
}
//接收数据
bool CTestcnhc::Recvdata(char* buf)
{
// char buf[30];
// memset(buf,0,sizeof(char)*30);
int len = strlen(buf);
recv(m_hsocket,buf,len,0);
int n;
for(int i=0;i<30;i++)
{
if(strncmp(buf+i,"Access\r\n",10)==0)
n=1;
else
n=0;
}
if(n==0)
m_bWSAStartup=FALSE;
int count=0;
//char buf[1024];
//memset(buf,0,sizeof(char)*1024);
while(1)
{
recv(m_hsocket,buf,1024,0);
cout<<*buf<<endl;
count++;
}
return(TRUE);
}
最主要的就是在发送数据和接收数据这两个函数要改进的地方。。比如出错处理,或是可能发生的
数据错误,有没有什么好的提议,谢谢!!!