cppsocket库基本用法

来源:互联网 发布:影院数据 阿里云 编辑:程序博客网 时间:2024/05/21 04:39

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开源包讨论组,请留号,谢谢

原创粉丝点击