1 /* 2 * $Id$ 3 * 4 * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium 5 * Copyright (c) 2002-2011, Professor Benoit Macq 6 * Copyright (c) 2010-2011, Kaori Hagihara 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #ifndef SOCK_MANAGER_H_ 32 # define SOCK_MANAGER_H_ 33 34 #include "bool.h" 35 #include "byte_manager.h" 36 37 #ifdef _WIN32 38 #include <winsock.h> 39 #else 40 typedef int SOCKET; 41 #endif /*_WIN32*/ 42 43 #define BUF_LEN 256 44 45 /** 46 * open listening socket 47 * 48 * @param port opening port number 49 * @return new socket 50 */ 51 SOCKET open_listeningsocket( int port); 52 53 /** 54 * accept a new connection to the listenning socket 55 * 56 * @param listening_socket listenning socket 57 * @return connected socket (-1 if error occurs) 58 */ 59 SOCKET accept_socket( SOCKET listening_socket); 60 61 62 /** 63 * receive a string line (ending with '\n') from client 64 * 65 * @param [in] connected_socket file descriptor of the connected socket 66 * @param [out] buf string to be stored 67 * @return red size 68 */ 69 int receive_line(SOCKET connected_socket, char *buf); 70 71 /** 72 * receive a string line (ending with '\n') from client, return malloc string 73 * 74 * @param [in] connected_socket file descriptor of the connected socket 75 * @return pointer to the string (memory allocated) 76 */ 77 char * receive_string( SOCKET connected_socket); 78 79 /** 80 * receive data stream to client 81 * 82 * @param [in] connected_socket file descriptor of the connected socket 83 * @param [in] length length of the receiving stream 84 * @return pointer to the data stream (memory allocated), NULL if failed 85 */ 86 void * receive_stream( SOCKET connected_socket, int length); 87 88 /** 89 * send data stream to client 90 * 91 * @param [in] connected_socket file descriptor of the connected socket 92 * @param [in] stream data stream 93 * @param [in] length length of data stream 94 */ 95 void send_stream( SOCKET connected_socket, void *stream, int length); 96 97 /** 98 * close socket 99 * 100 * @param [in] sock closing socket 101 * @return 0 if succeed, -1 if failed 102 */ 103 int close_socket( SOCKET sock); 104 105 #endif /* !SOCK_MANAGER_H_ */ 106