Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/netspeed/netspeed.c

    r26de91a r9e59c3b8  
    3636 */
    3737
    38 #include <assert.h>
    39 #include <inet/dnsr.h>
    40 #include <net/in.h>
    41 #include <net/inet.h>
    42 #include <net/socket.h>
    4338#include <stdio.h>
    4439#include <stdlib.h>
     
    4641#include <str_error.h>
    4742#include <task.h>
     43
     44#include <net/in.h>
     45#include <net/inet.h>
     46#include <net/socket.h>
    4847
    4948#define NAME "netspeed"
     
    115114}
    116115
    117 static int client(sock_type_t sock_type, const char *host, unsigned port,
     116static int client(sock_type_t sock_type, const char *address, unsigned port,
    118117    unsigned long count, char *buf, size_t bufsize)
    119118{
    120         inet_addr_t iaddr;
    121         struct sockaddr *saddr;
    122         socklen_t saddrlen;
    123        
    124         int rc = inet_addr_parse(host, &iaddr);
    125         if (rc != EOK) {
    126                 dnsr_hostinfo_t *hinfo = NULL;
    127                 rc = dnsr_name2host(host, &hinfo, ip_any);
    128                 if (rc != EOK) {
    129                         fprintf(stderr, "Error resolving host '%s'.\n", host);
    130                         return ENOENT;
    131                 }
    132                
    133                 iaddr = hinfo->addr;
    134         }
    135        
    136         rc = inet_addr_sockaddr(&iaddr, port, &saddr, &saddrlen);
    137         if (rc != EOK) {
    138                 assert(rc == ENOMEM);
    139                 fprintf(stderr, "Out of memory.\n");
    140                 return ENOMEM;
    141         }
    142        
    143         int conn_sd = socket(saddr->sa_family, sock_type, 0);
     119        struct sockaddr_in addr;
     120       
     121        addr.sin_family = AF_INET;
     122        addr.sin_port = htons(port);
     123       
     124        int rc = inet_pton(AF_INET, address, (void *) &addr.sin_addr.s_addr);
     125        if (rc != EOK) {
     126                fprintf(stderr, "inet_pton failed: %s\n", str_error(rc));
     127                return rc;
     128        }
     129       
     130        int conn_sd = socket(PF_INET, sock_type, 0);
    144131        if (conn_sd < 0) {
    145132                fprintf(stderr, "socket failed: %s\n", str_error(rc));
     
    148135       
    149136        if (sock_type == SOCK_STREAM) {
    150                 rc = connect(conn_sd, saddr, saddrlen);
     137                rc = connect(conn_sd, (struct sockaddr *) &addr, sizeof(addr));
    151138                if (rc != EOK) {
    152139                        fprintf(stderr, "connect failed: %s\n", str_error(rc));
     
    164151                        rc = send(conn_sd, buf, bufsize, 0);
    165152                } else {
    166                         rc = sendto(conn_sd, buf, bufsize, 0, saddr, saddrlen);
     153                        rc = sendto(conn_sd, buf, bufsize, 0,
     154                            (struct sockaddr *) &addr, sizeof(addr));
    167155                }
    168156                if (rc != EOK) {
     
    173161       
    174162        closesocket(conn_sd);
    175         free(saddr);
    176163        return rc;
    177164}
     
    180167{
    181168        fprintf(stderr, "Usage: netspeed <tcp|udp> server [port] <buffer size>\n");
    182         fprintf(stderr, "       netspeed <tcp|udp> client <host> <port> <count> <buffer size>\n");
     169        fprintf(stderr, "       netspeed <tcp|udp> client <ip> <port> <count> <buffer size>\n");
    183170}
    184171
Note: See TracChangeset for help on using the changeset viewer.