#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 }
|
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001