- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct user_data{
char user_name[100];
char host_name[100];
}cuser;
char file_path[100000];
int sockfd;
void error(const char *msg){
perror(msg);
exit(0);
}
char s[128];vector<user_data> users;
int main(int argc, char *argv[]){
int portno, n;struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
static char file_name[256];
if (argc < 2) {
fprintf(stderr,"usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[1]);
while(getchar()!='q'){
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
gethostname(s, 128);
server = gethostbyname(s);
if (server == NULL) {
fprintf(stderr,"ERROR, no such host\n");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno++);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
bzero(buffer,256);
n = write(sockfd,buffer,strlen(buffer));
if (n < 0)
error("ERROR writing to socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0)
error("ERROR reading from socket");
int sf=0;
for(int i=0;i<=strlen(buffer)-1;i++){
if(buffer[i]=='@'){
sf=i;
}
if(sf==0){
cuser.user_name[i]=buffer[i];
} else {
cuser.host_name[i-sf]=buffer[i+1];
}
}
users.push_back(cuser);
cout << cuser.user_name << " hostname: " << cuser.host_name << endl;
printf("Enter file name:\n");
fgets(file_name,255,stdin);
n = write(sockfd,file_name,255);
if (n < 0)
error("ERROR writing to socket");
bzero(file_name,256);
n = read(sockfd,file_path,100000);
if (n < 0)
error("ERROR reading from socket");
printf("\n%s\n",file_path);
memset(file_path,'\0',100000);
close(sockfd);
}
printf("\n\tRegistered users\n");
for(int i=0; i < users.size(); i++)
{
cout << users[i].user_name << " hostname: " << users[i].host_name << endl;
}
close(sockfd);return 0;
}