Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/Deprecated/UDP.Unix/sender.cpp File Reference

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>

Go to the source code of this file.

Defines

#define MESSAGE   100

Functions

void error_Mess (char *error_message)
int main (int argc, char *argv[])


Define Documentation

#define MESSAGE   100
 

Definition at line 11 of file sender.cpp.


Function Documentation

void error_Mess char *    error_message
 

Definition at line 13 of file sender.cpp.

00013 {}

int main int    argc = 0,
char *    argv[] = NULL
 

Definition at line 15 of file sender.cpp.

00016 {
00017   int MySocket;
00018   struct sockaddr_in receiver_addr;
00019   struct sockaddr_in from_addr;
00020   unsigned int receiver_port = 0;
00021   char *host = NULL;
00022   char *message = NULL;
00023   char buffer[MESSAGE+1];
00024   char buffer2[MESSAGE+1];
00025   int MessLen = 0;
00026   int Response_Length = 0;
00027   unsigned int receive_fromSize;
00028    struct hostent* hostdata = NULL;
00029 
00030   host = argv[1];
00031   message = argv[2];
00032 
00033   if( (MessLen = strlen(message)) > MESSAGE)
00034   cout<<"the message is too long \n";
00035 
00036   MySocket = socket(AF_INET, SOCK_DGRAM, 0);
00037 
00038   if(MySocket < 0)
00039     {
00040       cout<<"socket error\n";
00041     }
00042 
00043   cout<<"socket is a success\n";
00044 
00045   if ( atoi( host ) > 0 )
00046   {
00047     unsigned long IP = inet_addr( host );
00048     hostdata = gethostbyaddr( (char*)&IP, sizeof( IP ), PF_INET ); 
00049   }
00050   else
00051   {
00052     hostdata = gethostbyname( host );
00053   }
00054 
00055   memset(&receiver_addr, 0, sizeof(receiver_addr));
00056 
00057   receiver_addr.sin_family = AF_INET;
00058   receiver_addr.sin_addr = *(in_addr*)(hostdata->h_addr_list[0]);
00059   receiver_addr.sin_port = htons(4000);
00060 
00061   cout << receiver_addr.sin_addr.s_addr << endl;
00062  
00063 
00064   if((sendto(MySocket , message , MessLen, 0 , (struct sockaddr *)
00065        &receiver_addr , sizeof(receiver_addr))) != MessLen)
00066     
00067     cout<<"sendto sent a different number of bytes than expected "<<endl;
00068   else
00069     cout << "Message has been sent\n";
00070 
00071   memset( buffer, 0, sizeof(buffer) );//clear buffer
00072     
00073   receive_fromSize = sizeof(from_addr);
00074 
00075   if((Response_Length = recvfrom(MySocket , buffer , MESSAGE , 0, 
00076    (struct sockaddr *)&from_addr , &receive_fromSize)) !=  MessLen) {
00077        cout<<"receivedfrom failed\n";
00078   }
00079 
00080     cout << '[' << MessLen << ']' << endl;
00081     cout << Response_Length << sizeof( buffer ) << strlen(buffer) << endl;
00082 
00083     cout << '(' << receive_fromSize  << ')' << endl;
00084 
00085     memcpy( buffer2, buffer, 14 );
00086 
00087 
00088     int i = 0;
00089 
00090     for(; i < 14; i++ ) 
00091       printf("[%d]", buffer[i] );
00092 
00093 
00094 
00095        cout<<"I received the buffer from the receiver: ";
00096        cout<< buffer <<endl;
00097 
00098 
00099   cout << from_addr.sin_addr.s_addr << endl;     //
00100 
00101   if(receiver_addr.sin_addr.s_addr != from_addr.sin_addr.s_addr) {
00102     cout<<"Error, received message from else where!\n";
00103   }
00104 
00105 
00106   // buffer[Response_Length] = '\0';
00107 
00108   close(MySocket);
00109   
00110   return 0;
00111 }


Generated on Sun Oct 14 18:47:28 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001