00001 #include <sys/socket.h>
00002 #include <arpa/inet.h>
00003 #include <unistd.h>
00004 #include <stdio.h>
00005 #include <stdlib.h>
00006 #include <string.h>
00007 #include <iostream.h>
00008
00009 #define MESSAGE 100
00010
00011
00012 int main(int argc , char *argv[])
00013 {
00014 int MySocket;
00015 struct sockaddr_in receiver_addr;
00016 struct sockaddr_in sender_addr;
00017 unsigned int message_length;
00018 char *host;
00019 char *message;
00020 char buffer[MESSAGE];
00021 unsigned short receiver_port;
00022 int received_MessageSize;
00023 char* buffer2;
00024
00025 receiver_port= atoi(argv[1]);
00026
00027 MySocket = socket(AF_INET, SOCK_DGRAM, 0);
00028
00029 if(MySocket < 0)
00030 {
00031 cout<<"socket failed\n";
00032 }
00033
00034 cout<<"socket is a success. \n";
00035
00036 memset(&receiver_addr, 0, sizeof(receiver_addr));
00037 receiver_addr.sin_family = AF_INET;
00038 receiver_addr.sin_addr.s_addr = htonl(INADDR_ANY);
00039 receiver_addr.sin_port = htons(receiver_port);
00040
00041 if(bind(MySocket , (struct sockaddr *)&receiver_addr
00042 , sizeof(receiver_addr)) < 0)
00043
00044 cout<<"binding has failed\n";
00045 cout<<"binding has succeeded\n";
00046
00047 for(;;)
00048 {
00049 message_length = sizeof(sender_addr);
00050 memset( buffer, 0, sizeof(buffer) );
00051 if ((received_MessageSize = recvfrom(MySocket , buffer , MESSAGE ,0,
00052 (struct sockaddr *) &sender_addr, &message_length)) < 0) {
00053 cout<<"recvfrom() failed\n";
00054 }
00055
00056 cout << message_length;
00057
00058 cout<<"message has been received \n";
00059 cout<<"THE MESSAGE IS : "<< buffer <<endl;
00060
00061
00062 memset( buffer, 0, sizeof(buffer) );
00063 buffer2 = "1234567890";
00064
00065 memcpy( buffer, buffer2, MESSAGE );
00066
00067 int i = 0;
00068
00069 for(; i < 14; i++ )
00070 printf("[%d]%c", buffer[i], buffer2[i] );
00071
00072
00073 cout << "done" << endl;
00074
00075 if(sendto(MySocket, buffer, MESSAGE, 0,
00076 (struct sockaddr *) &sender_addr , sizeof(sender_addr)) !=
00077 MESSAGE )
00078
00079 cout<<"sendto don't work"<<endl;
00080 }
00081
00082 }
00083
00084
00085
00086
00087
00088