예제 #1
0
파일: File.hpp 프로젝트: antgar/rtype_cpp
  void			sendMe(int port) {
    Network		net;
    Socket		*s;
    ANetwork::t_frame	*frame;
    FILE		*file;
    char		buff[D_BUF];
    int			i = 0;
    int			local, size = D_BUF;


    file = fopen(this->_fullpath.c_str(), "rb");
    net.init(port, ANetwork::TCP_MODE);
    net.bind();
    net.listen(2);
    s = (Socket*) net.select();
    frame = (ANetwork::t_frame*) s->read(sizeof(Network::t_frame));
    (void)frame;
    s->write(CreateRequest::create(1, 2, 3, IntToString(_size), true), sizeof(ANetwork::t_frame));
    s->write(CreateRequest::create(1, 2, 3, basename(this->_fullpath), true), sizeof(ANetwork::t_frame));
    while (i < this->_size) {
      local = fread(&buff[0], 1, size, file);
      i += local;
      s->write(buff, local);
      size = (_size - i > D_BUF) ? D_BUF : _size - i;
    }
    s->close();
    net.close();
    fclose(file);
  };