#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[]) |
|
Definition at line 11 of file sender.cpp. |
|
Definition at line 13 of file sender.cpp. 00013 {} |
|
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 } |