Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/nettest1/nettest.c

    rc442f63 r9d58539  
    4141#include "print_error.h"
    4242
     43
    4344/** Creates new sockets.
    4445 *
     
    5152 * @return Other error codes as defined for the socket() function.
    5253 */
    53 int sockets_create(int verbose, int *socket_ids, unsigned int sockets,
    54     uint16_t family, sock_type_t type)
    55 {
     54int sockets_create(int verbose, int *socket_ids, int sockets, int family, sock_type_t type)
     55{
     56        int index;
     57
    5658        if (verbose)
    5759                printf("Create\t");
    58        
    59         fflush(stdout);
    60        
    61         for (unsigned int index = 0; index < sockets; index++) {
     60               
     61        fflush(stdout);
     62       
     63        for (index = 0; index < sockets; index++) {
    6264                socket_ids[index] = socket(family, type, 0);
    6365                if (socket_ids[index] < 0) {
    64                         printf("Socket %u (%d) error:\n", index, socket_ids[index]);
     66                        printf("Socket %d (%d) error:\n", index, socket_ids[index]);
    6567                        socket_print_error(stderr, socket_ids[index], "Socket create: ", "\n");
    6668                        return socket_ids[index];
    6769                }
    68                
    6970                if (verbose)
    7071                        print_mark(index);
     
    8283 * @return Other error codes as defined for the closesocket() function.
    8384 */
    84 int sockets_close(int verbose, int *socket_ids, unsigned int sockets)
    85 {
     85int sockets_close(int verbose, int *socket_ids, int sockets)
     86{
     87        int index;
     88        int rc;
     89
    8690        if (verbose)
    8791                printf("\tClose\t");
    88        
    89         fflush(stdout);
    90        
    91         for (unsigned int index = 0; index < sockets; index++) {
    92                 int rc = closesocket(socket_ids[index]);
     92
     93        fflush(stdout);
     94       
     95        for (index = 0; index < sockets; index++) {
     96                rc = closesocket(socket_ids[index]);
    9397                if (rc != EOK) {
    94                         printf("Socket %u (%d) error:\n", index, socket_ids[index]);
     98                        printf("Socket %d (%d) error:\n", index, socket_ids[index]);
    9599                        socket_print_error(stderr, rc, "Socket close: ", "\n");
    96100                        return rc;
    97101                }
    98                
    99102                if (verbose)
    100103                        print_mark(index);
     
    114117 * @return Other error codes as defined for the connect() function.
    115118 */
    116 int sockets_connect(int verbose, int *socket_ids, unsigned int sockets,
    117     struct sockaddr *address, socklen_t addrlen)
    118 {
     119int sockets_connect(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t addrlen)
     120{
     121        int index;
     122        int rc;
     123
    119124        if (verbose)
    120125                printf("\tConnect\t");
     
    122127        fflush(stdout);
    123128       
    124         for (unsigned int index = 0; index < sockets; index++) {
    125                 int rc = connect(socket_ids[index], address, addrlen);
     129        for (index = 0; index < sockets; index++) {
     130                rc = connect(socket_ids[index], address, addrlen);
    126131                if (rc != EOK) {
    127132                        socket_print_error(stderr, rc, "Socket connect: ", "\n");
    128133                        return rc;
    129134                }
    130                
    131                 if (verbose)
    132                         print_mark(index);
    133         }
    134        
    135         return EOK;
    136 }
    137 
    138 /** Send data via sockets.
    139  *
    140  * @param[in] verbose    Print out verbose information.
    141  * @param[in] socket_ids Stored socket identifiers.
    142  * @param[in] sockets    Number of sockets.
    143  * @param[in] address    Destination host address to send data to.
    144  * @param[in] addrlen    Length of the destination address in bytes.
    145  * @param[in] data       Data to be sent.
    146  * @param[in] size       Size of the data in bytes.
    147  * @param[in] messages   Number of datagrams per socket to be sent.
    148  * @param[in] type       Socket type.
    149  *
     135                if (verbose)
     136                        print_mark(index);
     137        }
     138       
     139        return EOK;
     140}
     141
     142/** Sends data via sockets.
     143 *
     144 * @param[in] verbose A value indicating whether to print out verbose information.
     145 * @param[in] socket_ids A field of stored socket identifiers.
     146 * @param[in] sockets The number of sockets in the field. Should be at most the size of the field.
     147 * @param[in] address The destination host address to send data to.
     148 * @param[in] addrlen The length of the destination address in bytes.
     149 * @param[in] data The data to be sent.
     150 * @param[in] size The data size in bytes.
     151 * @param[in] messages The number of datagrams per socket to be sent.
    150152 * @return EOK on success.
    151153 * @return Other error codes as defined for the sendto() function.
    152  *
    153  */
    154 int sockets_sendto(int verbose, int *socket_ids, unsigned int sockets,
    155     struct sockaddr *address, socklen_t addrlen, char *data, size_t size,
    156     unsigned int messages, sock_type_t type)
    157 {
     154 */
     155int sockets_sendto(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t addrlen, char *data, int size, int messages)
     156{
     157        int index;
     158        int message;
     159        int rc;
     160
    158161        if (verbose)
    159162                printf("\tSendto\t");
    160        
    161         fflush(stdout);
    162        
    163         for (unsigned int index = 0; index < sockets; index++) {
    164                 for (unsigned int message = 0; message < messages; message++) {
    165                         int rc;
    166                        
    167                         switch (type) {
    168                         case SOCK_STREAM:
    169                                 rc = send(socket_ids[index], data, size, 0);
    170                                 break;
    171                         case SOCK_DGRAM:
    172                                 rc = sendto(socket_ids[index], data, size, 0, address, addrlen);
    173                                 break;
    174                         default:
    175                                 rc = EINVAL;
    176                         }
    177                        
     163
     164        fflush(stdout);
     165       
     166        for (index = 0; index < sockets; index++) {
     167                for (message = 0; message < messages; message++) {
     168                        rc = sendto(socket_ids[index], data, size, 0, address, addrlen);
    178169                        if (rc != EOK) {
    179                                 printf("Socket %u (%d), message %u error:\n",
    180                                     index, socket_ids[index], message);
     170                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
    181171                                socket_print_error(stderr, rc, "Socket send: ", "\n");
    182172                                return rc;
    183173                        }
    184174                }
    185                
    186                 if (verbose)
    187                         print_mark(index);
    188         }
    189        
    190         return EOK;
    191 }
    192 
    193 /** Receive data via sockets.
    194  *
    195  * @param[in]     verbose    Print out verbose information.
    196  * @param[in]     socket_ids Stored socket identifiers.
    197  * @param[in]     sockets    Number of sockets.
    198  * @param[in]     address    Source host address of received datagrams.
    199  * @param[in,out] addrlen    Maximum length of the source address in bytes.
    200  *                           The actual size of the source address is set.
    201  * @param[out]    data       Received data.
    202  * @param[in]     size       Maximum data size in bytes.
    203  * @param[in]     messages   Number of datagrams per socket to be received.
    204  *
     175                if (verbose)
     176                        print_mark(index);
     177        }
     178       
     179        return EOK;
     180}
     181
     182/** Receives data via sockets.
     183 *
     184 * @param[in] verbose A value indicating whether to print out verbose information.
     185 * @param[in] socket_ids A field of stored socket identifiers.
     186 * @param[in] sockets The number of sockets in the field. Should be at most the size of the field.
     187 * @param[in] address The source host address of received datagrams.
     188 * @param[in,out] addrlen The maximum length of the source address in bytes. The actual size of the source address is set instead.
     189 * @param[out] data The received data.
     190 * @param[in] size The maximum data size in bytes.
     191 * @param[in] messages The number of datagrams per socket to be received.
    205192 * @return EOK on success.
    206193 * @return Other error codes as defined for the recvfrom() function.
    207  *
    208  */
    209 int sockets_recvfrom(int verbose, int *socket_ids, unsigned int sockets,
    210     struct sockaddr *address, socklen_t *addrlen, char *data, size_t size,
    211     unsigned int messages)
    212 {
     194 */
     195int sockets_recvfrom(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t *addrlen, char *data, int size, int messages)
     196{
     197        int value;
     198        int index;
     199        int message;
     200
    213201        if (verbose)
    214202                printf("\tRecvfrom\t");
     
    216204        fflush(stdout);
    217205       
    218         for (unsigned int index = 0; index < sockets; index++) {
    219                 for (unsigned int message = 0; message < messages; message++) {
    220                         int rc = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
    221                         if (rc < 0) {
    222                                 printf("Socket %u (%d), message %u error:\n",
    223                                     index, socket_ids[index], message);
    224                                 socket_print_error(stderr, rc, "Socket receive: ", "\n");
    225                                 return rc;
    226                         }
    227                 }
    228                
    229                 if (verbose)
    230                         print_mark(index);
    231         }
    232        
    233         return EOK;
    234 }
    235 
    236 /** Send and receive data via sockets.
     206        for (index = 0; index < sockets; index++) {
     207                for (message = 0; message < messages; message++) {
     208                        value = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
     209                        if (value < 0) {
     210                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
     211                                socket_print_error(stderr, value, "Socket receive: ", "\n");
     212                                return value;
     213                        }
     214                }
     215                if (verbose)
     216                        print_mark(index);
     217        }
     218        return EOK;
     219}
     220
     221/** Sends and receives data via sockets.
    237222 *
    238223 * Each datagram is sent and a reply read consequently.
    239224 * The next datagram is sent after the reply is received.
    240225 *
    241  * @param[in]     verbose    Print out verbose information.
    242  * @param[in]     socket_ids Stored socket identifiers.
    243  * @param[in]     sockets    Number of sockets.
    244  * @param[in,out] address    Destination host address to send data to.
    245  *                           The source host address of received datagrams is set.
    246  * @param[in]     addrlen    Length of the destination address in bytes.
    247  * @param[in,out] data       Data to be sent. The received data are set.
    248  * @param[in]     size       Size of the data in bytes.
    249  * @param[in]     messages   Number of datagrams per socket to be received.
    250  * @param[in]     type       Socket type.
    251  *
     226 * @param[in] verbose A value indicating whether to print out verbose information.
     227 * @param[in] socket_ids A field of stored socket identifiers.
     228 * @param[in] sockets The number of sockets in the field. Should be at most the size of the field.
     229 * @param[in,out] address The destination host address to send data to. The source host address of received datagrams is set instead.
     230 * @param[in] addrlen The length of the destination address in bytes.
     231 * @param[in,out] data The data to be sent. The received data are set instead.
     232 * @param[in] size The data size in bytes.
     233 * @param[in] messages The number of datagrams per socket to be received.
    252234 * @return EOK on success.
    253235 * @return Other error codes as defined for the recvfrom() function.
    254  *
    255  */
    256 int sockets_sendto_recvfrom(int verbose, int *socket_ids, unsigned int sockets,
    257     struct sockaddr *address, socklen_t *addrlen, char *data,
    258     size_t size, unsigned int messages, sock_type_t type)
    259 {
     236 */
     237int sockets_sendto_recvfrom(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t *addrlen, char *data, int size, int messages)
     238{
     239        int value;
     240        int index;
     241        int message;
     242        int rc;
     243
    260244        if (verbose)
    261245                printf("\tSendto and recvfrom\t");
    262        
    263         fflush(stdout);
    264        
    265         for (unsigned int index = 0; index < sockets; index++) {
    266                 for (unsigned int message = 0; message < messages; message++) {
    267                         int rc;
    268                        
    269                         switch (type) {
    270                         case SOCK_STREAM:
    271                                 rc = send(socket_ids[index], data, size, 0);
    272                                 break;
    273                         case SOCK_DGRAM:
    274                                 rc = sendto(socket_ids[index], data, size, 0, address, *addrlen);
    275                                 break;
    276                         default:
    277                                 rc = EINVAL;
    278                         }
    279                        
     246
     247        fflush(stdout);
     248       
     249        for (index = 0; index < sockets; index++) {
     250                for (message = 0; message < messages; message++) {
     251                        rc = sendto(socket_ids[index], data, size, 0, address, *addrlen);
    280252                        if (rc != EOK) {
    281                                 printf("Socket %u (%d), message %u error:\n",
    282                                     index, socket_ids[index], message);
     253                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
    283254                                socket_print_error(stderr, rc, "Socket send: ", "\n");
    284255                                return rc;
    285256                        }
    286                        
    287                         rc = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
    288                         if (rc < 0) {
    289                                 printf("Socket %u (%d), message %u error:\n",
    290                                     index, socket_ids[index], message);
    291                                 socket_print_error(stderr, rc, "Socket receive: ", "\n");
    292                                 return rc;
    293                         }
    294                 }
    295                
     257                        value = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
     258                        if (value < 0) {
     259                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
     260                                socket_print_error(stderr, value, "Socket receive: ", "\n");
     261                                return value;
     262                        }
     263                }
    296264                if (verbose)
    297265                        print_mark(index);
     
    306274 *
    307275 * @param[in] index The index of the mark to be printed.
    308  *
    309  */
    310 void print_mark(unsigned int index)
     276 */
     277void print_mark(int index)
    311278{
    312279        if ((index + 1) % 10)
     
    314281        else
    315282                printf("|");
    316        
    317283        fflush(stdout);
    318284}
Note: See TracChangeset for help on using the changeset viewer.