Sponsored Content
Top Forums Programming Store file into a buffer to send it through a socket Post 302347472 by semash! on Tuesday 25th of August 2009 07:43:46 PM
Old 08-25-2009
Hey achenle, thanks for the reply,
I did the code as following:

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <linux/if_ether.h>
#include <sys/stat.h>

int main(int argc, char *argv[])
{
if(argc !=3){
printf("Usage: %s <iface> <raw filename>\n", argv[0]);
exit(1);
}

int sfd,ffd;
ssize_t bytes;
unsigned char *buffer;
struct stat sizb;
struct sockaddr from;
from.sa_family = 1;
strcpy(from.sa_data, argv[1]);

if((stat(argv[2],&sizb))!=0){
perror("stat() failed: ");
exit(1);
}

buffer=(unsigned char *)malloc(sizb.st_size);
if((ffd=open(argv[2], O_RDONLY))<0){
perror("open() failed: ");
exit(1);
}

if((bytes = read(ffd, buffer, sizb.st_size))<= 0){
perror("read() failed: ");
close(ffd);
exit(1);
} else {
close(ffd);
}

if((sfd=socket(AF_INET,SOCK_PACKET,ntohs(ETH_P_ALL)))<0){
perror("socket() failed: ");
exit(1);
}

if((sendto(sfd, buffer, sizb.st_size,0,(struct sockaddr *)&from,sizeof(from)))<0){
perror("send() failed: ");
exit(1);
}

printf("%i bytes transmitted.\n", sizb.st_size);
close(sfd);
return 0;
}

If you create a file with a hex editor, it will successfully transmit to the medium the frame Smilie.

I'll test your way, thank you.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

What is my UDP send/recieve buffer size

Hi, If some one was to suggest, "increase your kernal tunables related to UDP, in particular the UDP send/recieve buffer size".... then what would they mean? :confused: How can I find out what this current value is? Thousand many thanks. Neil (3 Replies)
Discussion started by: nhatch
3 Replies

2. Shell Programming and Scripting

send function in socket

Hi All, I encountered a stange problem while doing a perl script to use socket. i need to transfer a file from client to sever. but error came as argument missing in send function.........Plz tell me the wt r the arguments in send and recv functions....... (0 Replies)
Discussion started by: trupti_rinku
0 Replies

3. Programming

UDP socket - can both client and server recv and send

Hi, Am very new to socket programming. When we use UDP sockets to communicate between two processess, will both the client/server socket be able to send/recv ? meaning can sendto()/ recvfrom() be used on both server and client? It could be useful even if anybody provide some link on socket... (1 Reply)
Discussion started by: rvan
1 Replies

4. UNIX for Advanced & Expert Users

connect problem for sctp socket (ipv6 socket) - Runtime fail Invalid Arguments

Hi, I was porting ipv4 application to ipv6; i was done with TCP transports. Now i am facing problem with SCTp transport at runtime. To test SCTP transport I am using following server and client socket programs. Server program runs fine, but client program fails giving Invalid Arguments for... (0 Replies)
Discussion started by: chandrutiptur
0 Replies

5. Programming

Send/Receive buffer size??

Dear friends, How do I find the TCP send and receive buffer size? (1 Reply)
Discussion started by: nagalenoj
1 Replies

6. Programming

Socket Programming Send File

Hello my friends; Look at this 2 program: Client: #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> int main ( int agrc, char *argv ) { int Socket; struct sockaddr_in... (5 Replies)
Discussion started by: htabesh
5 Replies

7. Programming

Finding used socket receive-buffer size

I have set the receive buffer size of socket to max. setsockopt(sd,SOL_SOCKET, SO_RCVBUF,&max,optval); Am reading data from the socket in a loop(say max 100 bytes per recv) while(1) { int rlen=recv(sd,(void *)buf, 100 , 0); //err handle and processing } Assume my process is slow... (2 Replies)
Discussion started by: johnbach
2 Replies

8. Programming

how can I send and receive data in client server socket programing

char name; printf ("Welcome to the server \n"); printf ("Enter user name: \n"); scanf ("%c", &name); how can client send name to server:what should be the code? int send ( int sid , const char ∗buffer Ptr , int len , int f l a g ) how can client receive ack from... (1 Reply)
Discussion started by: saiful_911
1 Replies

9. AIX

Sample C program to Send/Recieve a file using Socket

Hi All, I urgently need a Sample C program to Send/Recieve a file using Socket. Thanks Sara (1 Reply)
Discussion started by: saraperu
1 Replies

10. Programming

How to avoid 'No buffer space available' on C socket?

Hello everybody, Years ago i left in stand-by a project of mine where the main program was supposed to send thousands ARP frames over the socket as fast as it could; but because of a programming issue i couldn't continue it. 2 days ago I decided to solve that issue. The thing is, when the... (4 Replies)
Discussion started by: Zykl0n-B
4 Replies
SHUTDOWN(2)						      BSD System Calls Manual						       SHUTDOWN(2)

NAME
shutdown -- shut down part of a full-duplex connection SYNOPSIS
#include <sys/socket.h> int shutdown(int socket, int how); DESCRIPTION
The shutdown() call causes all or part of a full-duplex connection on the socket associated with socket to be shut down. If how is SHUT_RD, further receives will be disallowed. If how is SHUT_WR, further sends will be disallowed. If how is SHUT_RDWR, further sends and receives will be disallowed. RETURN VALUES
The shutdown() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indi- cate the error. ERRORS
The call succeeds unless: [EBADF] Socket is not a valid descriptor. [EINVAL] The how argument is invalid. [ENOTCONN] The specified socket is not connected. [ENOTSOCK] Socket is a file, not a socket. SEE ALSO
connect(2), connectx(2), disconnectx(2), socket(2) HISTORY
The shutdown() function call appeared in 4.2BSD. 4.2 Berkeley Distribution March 18, 2015 4.2 Berkeley Distribution
All times are GMT -4. The time now is 04:34 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy