Sponsored Content
Full Discussion: sendto invalid argument
Special Forums IP Networking sendto invalid argument Post 302205682 by Puntino on Monday 16th of June 2008 05:06:08 AM
Old 06-16-2008
sendto invalid argument

Hi

I lost a lot of time in understanding the message "sendto Invalid argument" when I execute the following code.
This code is a simple UDP sender improved with some reliability feature.
My goal is to send a file. I've reported only the code which may be useful.
Can anyone help me?
Thank you in advance.



Code:
typedef struct{
  char* filename;
  unsigned long encoded_file_size;
}first_message;


typedef struct {
     char data[DATALENGTH];
     int nseq;
}packet; 






ssize_t send_first(int sd, void* buf,size_t len,char* err,const struct sockaddr* to);


int main (int argc, char** argv){

  FILE* fin;
  first_message fm;
  int sd; 
  struct sockaddr_in dest;
  
  unsigned long length, file_size,chunk_size;
  time_t end,start;
  double internal; 
  packet pck;

  if (argc != 3) {
    fprintf(stderr,"Usage: IPdestination path \n");
   exit(EXEC_FAILED);
}

  memset((char *)&dest, 0, sizeof(dest));
  dest.sin_family = AF_INET;
  dest.sin_port = htons(PORT);
  dest.sin_addr.s_addr = inet_addr(argv[1]); /*destination's address*/
 
  if ((sd = socket(AF_INET,SOCK_DGRAM,0))<0) {
  perror("socket creation failed");
  exit(EXEC_FAILED);
  }
  fin = fopen(argv[2],"rb");
  if (fin != NULL){
      
      fm.filename = find_fileName(argv[2]);
      fm.encoded_file_size = htonl(get_file_size(fin));
       printf("sizeof(fm) %ld",sizeof(fm));    

/*HERE THE ERROR*/

      while (send_first(sd,&fm,sizeof(fm),"unable to send first message",(struct sockaddr*)&dest)<0){
      send_first(sd,&fm,2*sizeof(fm),"unable to send first message",(struct sockaddr*)&dest);}
  
.....
}  /*end of main*/

ssize_t send_first(int sd, void* buf,size_t len,char* err, const struct sockaddr* to){
 
 unsigned long byte_sent;
 if(byte_sent = sendto(sd, buf, len, 0, to, sizeof(to))<0){
      perror(err); }
 sleep(TIMEOUT);
 if(fcntl(sd,F_SETFL,O_NONBLOCK)==-1){
    perror("Impossible to set NONBLOCK mode for the socket");
 }     
 return recvfrom(sd, buf,len,0,NULL,NULL);
}

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

stty: : Invalid argument

Hello Everyone; I have a script that is throwing the following message: stty: : Invalid argument The line that gives the message is the following, sailormoon$ scp home/voice.xml newwave@silvermoon:/newwave/config/radius stty: : Invalid argument voice.xml | ... (2 Replies)
Discussion started by: tony3101
2 Replies

2. Solaris

ps: 65535 is an invalid non-numeric argument for -p option

I want to figure out what is the reason of error message I have in Solaris 10. Why Solaris 10 dosn't recognize 65535? ps: 65535 is an invalid non-numeric argument for -p option usage: ps 'format' is one or more of: Thank you (5 Replies)
Discussion started by: gogogo
5 Replies

3. Programming

error "Invalid argument" returned after call sched_setscheduler

the code is below and the was run on Solaris 9. ----------------------------- struct sched_param param; param.sched_priority = 99; if(sched_setscheduler(0, SCHED_RR, &param) == -1) { perror("setting priority"); exit(1); } ------------------------------- after the... (1 Reply)
Discussion started by: robin.zhu
1 Replies

4. UNIX for Dummies Questions & Answers

msgrcv : Invalid argument

Hi All, Please guide me how to get rid : msgrcv : Invalid argument. I am using message queues: msgsnd and msgrcv, I am able to send through msgsnd and receive through msgrcv, but at times i get the belo error. msgrcv : Invalid argument. (1 Reply)
Discussion started by: answers
1 Replies

5. Solaris

Invalid Argument and glassfish

I tried to install glassfish on Solaris 10 and it worked fine on other instances. I got the below message bash-3.00# ./sjsas-9_1_01-solaris-sparc.bin -console bash: ./sjsas-9_1_01-solaris-sparc.bin: Invalid argument I logged on as root and the file has execute permission. So strange. Do... (1 Reply)
Discussion started by: Andrew2008
1 Replies

6. UNIX for Dummies Questions & Answers

Need FIX for: RTNETLINK answers: Invalid argument

OK...I'm using the latest version of Fedora 10. My network connection was working fine, and I had several network LAN shares on my desktop. Then I rebooted the system without dismounting those shares first. ooops. <:( ...When the system came back up, my network connection was gone. All... (2 Replies)
Discussion started by: Pudnik
2 Replies

7. UNIX for Advanced & Expert Users

invalid argument in semctl()

When I am using the function semctl() it is giving me error as the INVALID ARGUMENT. Can any body give me the possible reasons??? (2 Replies)
Discussion started by: asimibm
2 Replies

8. Programming

SIOCSARP: Invalid Argument.

Hello everybody, I've been programming an alternative to linux's standard 'arp' program. I can delete arp entries (SIOCDARP), get arp entries (SIOCGARP), but i'm having troubles setting entries with ioctl. I can't set any PERM, USETRAILERS, or COM address. It only adds PUB entries and i don't... (2 Replies)
Discussion started by: semash!
2 Replies

9. UNIX for Advanced & Expert Users

NFS : Invalid argument (Remote share mounting issue)

Hi Guru's, I am unable to mount NFS share on unix system (DG/UX) which is nfs client. Error: mount: /nfsshare: Invalid argument mount: giving up on: /mountpoint i tried following command mount -t nfs remotehost:/nfsshare /mountpoint Error: (5 Replies)
Discussion started by: Justin John
5 Replies

10. UNIX for Beginners Questions & Answers

Mount error in Linux: invalid argument

hi i have an android phone which i think is bricked, so wanted to see what the actual issue is, I flashed it with TWRP recovery image and launched terminal i, was able understand that mount is not happening, it says invalid argument and no such file or directory. Below is what i get while... (32 Replies)
Discussion started by: nanz143
32 Replies
SEND(2) 						      BSD System Calls Manual							   SEND(2)

NAME
send, sendto, sendmsg -- send a message from a socket LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <sys/socket.h> ssize_t send(int s, const void *msg, size_t len, int flags); ssize_t sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); ssize_t sendmsg(int s, const struct msghdr *msg, int flags); DESCRIPTION
send(), sendto(), and sendmsg() are used to transmit a message to another socket. send() may be used only when the socket is in a connected state, while sendto() and sendmsg() may be used at any time. The address of the target is given by to with tolen specifying its size. The length of the message is given by len. If the message is too long to pass atomically through the underlying protocol, the error EMSGSIZE is returned, and the message is not transmitted. No indication of failure to deliver is implicit in a send(). Locally detected errors are indicated by a return value of -1. If no messages space is available at the socket to hold the message to be transmitted, then send() normally blocks, unless the socket has been placed in non-blocking I/O mode. The select(2) or poll(2) call may be used to determine when it is possible to send more data. The flags parameter may include one or more of the following: #define MSG_OOB 0x0001 /* process out-of-band data */ #define MSG_PEEK 0x0002 /* peek at incoming message */ #define MSG_DONTROUTE 0x0004 /* bypass routing, use direct interface */ #define MSG_EOR 0x0008 /* data completes record */ #define MSG_NOSIGNAL 0x0400 /* do not generate SIGPIPE on EOF */ The flag MSG_OOB is used to send ``out-of-band'' data on sockets that support this notion (e.g. SOCK_STREAM); the underlying protocol must also support ``out-of-band'' data. MSG_EOR is used to indicate a record mark for protocols which support the concept. MSG_DONTROUTE is usu- ally used only by diagnostic or routing programs. See recv(2) for a description of the msghdr structure. MSG_NOSIGNAL is used to prevent SIGPIPE generation when writing a socket that may be closed. RETURN VALUES
The call returns the number of characters sent, or -1 if an error occurred. ERRORS
send(), sendto(), and sendmsg() fail if: [EBADF] An invalid descriptor was specified. [ENOTSOCK] The argument s is not a socket. [EFAULT] An invalid user space address was specified for a parameter. [EMSGSIZE] The socket requires that message be sent atomically, and the size of the message to be sent made this impossible. [EPIPE] In a connected socket the connection has been broken. [EDSTADDRREQ] In a non-connected socket a destination address has not been specified. [EAGAIN|EWOULDBLOCK] The socket is marked non-blocking and the requested operation would block. [ENOBUFS] The system was unable to allocate an internal buffer. The operation may succeed when buffers become available. [ENOBUFS] The output queue for a network interface was full. This generally indicates that the interface has stopped sending, but may be caused by transient congestion. [EACCES] The SO_BROADCAST option is not set on the socket, and a broadcast address was given as the destination. [EHOSTUNREACH] The destination for the message is unreachable. [EHOSTDOWN] The destination is a host on the local subnet and does not respond to arp(4). [EINVAL] The total length of the I/O is more than can be expressed by the ssize_t return value. [EAFNOSUPPORT] Addresses in the specified address family cannot be used with this socket. sendto() will also fail if: [EISCONN] A destination address was specified and the socket is already connected. sendmsg() will also fail if: [EMSGSIZE] The msg_iovlen member of the msg structure is less than or equal to 0 or is greater than {IOV_MAX}. SEE ALSO
fcntl(2), getsockopt(2), recv(2), select(2), socket(2), write(2) HISTORY
The send() function call appeared in 4.2BSD. BSD
May 9, 2008 BSD
All times are GMT -4. The time now is 05:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy