cppsocket是一个开源包,大家可以到如下网站下载
http://cppsocket.cvs.sourceforge.net/
1.建立一个TCP服务器端
class HttpServerSocket:public HTTPSocket
{
public:
ApHttpServerSocket(SocketHandler& sockethandler);
~ApHttpServerSocket(void);
void OnFirst();
void OnHeader(const std::string& key,const std::string& value);
void OnHeaderComplete();
void OnData(const char *,size_t);
}
// 主程序
SocketHandler handler;
handler.SetSocks4Host("127.0.0.1");
ListenSocket<HttpServerSocket> listenSocket(hanlder);
listenSocket.Bind(8088); //端口自设
handler.Add(listenSocket);
while(handler.Count()>0)
{
handler.Select(1,0);
}
这样如果监听客户端的连接, ListenSocket就会为之创立一个HttpServerSocket对象,而接收到的http消息皆可在回调函数中得到.
2.TCP客户端 cppsocke开源包中的HttpPostSocket类发送消息时格式为:
head,head,.... +Field: 文本 +Field+文件 即可以是纯文字,或文字,文件相混合的消息.用起来也相当方便
我们也可以构建一个自己postSocket,只用来发送消息,格式为:
head,head,....+文本
class MyHttpPostSocket:public HTTPSocket
{
public:
MyHttpPostSocket(ApHttpHandler* handler,const char* url);//定义可copy HttpPostSocket类的构造函数内容
~MyHttpPostSocket(void);
void OnFirst();
void OnHeader(const std::string& key,const std::string& value);
void OnHeaderComplete();
void OnData(const char *,size_t);
void Open();
void OnConnect(); //定义可copy HttpPostSocket类OnConnect函数内容
void OnDisconnect();
void setBody(const char* body); //
}
// 主程序
SocketHandler handler;
ApHttpPostSocket postSocket (handler,url);
postSocket.setBody("你相发的消息");
postSocket.Open();
handler.Add(postSocket);
while( handler.Count()>0)
{
handler.Select(1,0);
}
//这样就可以发送消息出去,并在回调函数里查看服务器端的回复(注:回复2XX,4XX,5XX也是在服务器端要自己定义的,回调函数只能侦听到该request的回复,然后应该通过setDeleteByHandler把自己delete掉,而要发送消息只能重新建立一个MyHttpPostSocket)
用起来也不舒服,但小组选用的开源库是这个,没办法.跟着学罗.
写此文志在抛砖引玉,如果大家有好的cppsocket开源包讨论组,请留号,谢谢