- 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;
}
Lure Of Chaos 23.07.2012 22:29 # +5
roman-kashitsyn 23.07.2012 22:37 # +2
AliceGoth 23.07.2012 23:15 # 0
roman-kashitsyn 23.07.2012 23:18 # +1
absolut 24.07.2012 06:24 # 0
SmackMyBitchUp 24.07.2012 08:06 # 0
>AliceGoth, 24 Июля 2012
>AliceGoth 9 часов назад # +1
>Это говнокод?
ах тыж, сука
bormand 24.07.2012 05:11 # +2
CONFORMING TO
4.3BSD. This function is deprecated (marked as LEGACY in POSIX.1-2001): use memset(3) in new programs. POSIX.1-2008 removes the specification of bzero().
man bcopy
CONFORMING TO
4.3BSD. This function is deprecated (marked as LEGACY in POSIX.1-2001): use memcpy(3) or memmove(3) in new programs. Note that the first two arguments are interchanged for memcpy(3) and memmove(3). POSIX.1-2008 removes the specification of bcopy().
bormand 24.07.2012 05:19 # +2
Теперь никто не скажет "Где, здесь c++, AliceGoth"...
bormand 24.07.2012 05:46 # +3
А за вот это зачёт! Сделаем за O(n^2) то, что обычно делается за O(n).
sayidandrtfm 24.07.2012 06:18 # +4
absolut 24.07.2012 09:11 # +1
bormand 24.07.2012 10:33 # +2
guest 24.07.2012 10:58 # +3
movaxbx 24.07.2012 09:24 # +2
fxd
Fai 24.07.2012 11:20 # 0
absolut 24.07.2012 11:40 # +1
absolut 26.07.2012 14:32 # +7
roman-kashitsyn 26.07.2012 14:35 # +5
SmackMyBitchUp 26.07.2012 15:46 # +2
sayidandrtfm 26.07.2012 17:02 # +2
SmackMyBitchUp 27.07.2012 01:25 # +1
eth0 26.07.2012 15:47 # +3
moderator 26.07.2012 15:56 # +4
Чтобы ты мне больше не грубил - будет наука.
absolut 26.07.2012 16:10 # +4
moderator 26.07.2012 16:38 # +2
eth0 26.07.2012 16:19 # +3
bormand 26.07.2012 17:24 # +7
fxd.
eth0 26.07.2012 18:18 # +3
absolut 26.07.2012 19:42 # +4
bormand 26.07.2012 20:01 # +4
absolut 27.07.2012 08:49 # +3
SmackMyBitchUp 27.07.2012 11:08 # +4
rat4 26.07.2012 20:20 # +5