深入完成端口!一套完成端口的FRAMEWORK。使用方法太简单了。
根据jetbyte的原代码加以修改
如ECHO服务器
先写一个接收发送处理类
#pragma once
#include "e:\vc\scsock\cmdhandlers.h"
#include "e:\vc\scsock\svsocket.h"
#include "e:\vc\scsock\iobuffer.h"
class CEchoD :public scd::CCmdHandlers
{
public:
virtual void OnConnectionEstablished(scd::CSvSocket *pSocket,scd::CIOBuffer *pAddress)
{
static char buf[15];
memset(buf,0,15);
sprintf(buf,"Sevencat's Echo");
pSocket->Write(buf,15);
pSocket->Read();
}
virtual void OnReadCompleted(scd::CSvSocket *pSocket,scd::CIOBuffer *pBuffer)
{
pSocket->Write(pBuffer);
pSocket->Read();
}
};
第一个函数是当第一次建立连接时,你可以发送一些话给对方,或者直接读就可以了。
第二个方法是读到东西后怎么处理。
main里面的做法
int _tmain(int argc, _TCHAR* argv[])
{
CEchoD ch;
//第一个参数就是上面的这个,第二个参数是端口,第三个参数是IP地址,其他的大家自己看吧。这样就可以开始了。
scd::CSocketServer server(ch,5001);
server.StartAcceptingConnections();
server.Start();
char bb;
std::cin>>bb;
return 0;
}
再送一个TIME服务器的CTIMED
class CTimeD :public scd::CCmdHandlers
{
public:
virtual void OnConnectionEstablished(scd::CSvSocket *pSocket,scd::CIOBuffer *pAddress)
{
mytime mtime;
time(&mtime.the_time);
mtime.the_time+=2208988800;
mtime.the_time=htonl(mtime.the_time);
pSocket->Write((char*)&mtime,4);
}
};将MAIN中的端口号改为37即可。
我想请人测试,就是不知道该放到哪里去才好。