Program klient - serwer 1wszy argument i wysyłający n jako drugi argument.
-
- Sędziwy Jeż
- Posty: 41
- Rejestracja: 04 wrz 2010, 14:14
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Program klient - serwer 1wszy argument i wysyłający n jako drugi argument.
Hmm Macie pomysł jak napisać taki program? Podpowiedzcie mi a jeśli możecie to podeślijcie przykładowy program.
- pixelenter
- Serdeczny Borsuk
- Posty: 194
- Rejestracja: 31 gru 2009, 15:41
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86_64
Odp: Program klient - serwer 1wszy argument i wysyłający n jako drugi argument.
1. Wytłumacz dokładnie o co ci chodzi
2. Jaki język programowania
3. Może najpierw coś napisz, a potem jak będziesz miał problem to ci pomożemy. Nie licz na gotowce.
2. Jaki język programowania
3. Może najpierw coś napisz, a potem jak będziesz miał problem to ci pomożemy. Nie licz na gotowce.
http://uwolnijlaptopa.pl
http://counter.li.org/cgi-bin/certificate.cgi/528644
http://counter.li.org/cgi-bin/certificate.cgi/528644
-
- Sędziwy Jeż
- Posty: 41
- Rejestracja: 04 wrz 2010, 14:14
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Program klient - serwer 1wszy argument i wysyłający n jako drugi argument.
Więc tak program ma być napisany w C++ a o to program jaki mam napisać.
"prosty program klienta, który łączy się z serwerem (podanym jako pierwszy argument) i cyklicznie wysyła n (podane jako drugi argument) bajtów przypadkowych danych i odbiera 4 bajty informacji zwrotnej." Chętnie bym sam go napisał i was nie męczył jednak w Ty momencie nie mam pomysłu w głowie kompletnie jak to zrobić po prostu pustka a do tego nie mam dostępu do linuxa aby jeszcze sprawdzić jak to działa. W internecie znalazłem dwa program:
Pierwszy Client:
Drugi Server:
PS: Tylko nie do końca rozumiem co te programy robią tzn jak działają.
EDIT:
pomoże mi ktoś?
"prosty program klienta, który łączy się z serwerem (podanym jako pierwszy argument) i cyklicznie wysyła n (podane jako drugi argument) bajtów przypadkowych danych i odbiera 4 bajty informacji zwrotnej." Chętnie bym sam go napisał i was nie męczył jednak w Ty momencie nie mam pomysłu w głowie kompletnie jak to zrobić po prostu pustka a do tego nie mam dostępu do linuxa aby jeszcze sprawdzić jak to działa. W internecie znalazłem dwa program:
Pierwszy Client:
Kod: Zaznacz cały
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void error(char *msg)
{
perror(msg);
exit(0);
}
int main(int argc, char *argv[])
{
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
if (argc < 3) {
fprintf(stderr,"usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
server = gethostbyname(argv[1]);
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,&serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
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");
printf("%s\n",buffer);
return 0;
}
Drugi Server:
Kod: Zaznacz cały
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
void error(char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno, clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR on binding");
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if (n < 0) error("ERROR reading from socket");
printf("Here is the message: %s\n",buffer);
n = write(newsockfd,"I got your message",18);
if (n < 0) error("ERROR writing to socket");
return 0;
}
PS: Tylko nie do końca rozumiem co te programy robią tzn jak działają.
EDIT:
pomoże mi ktoś?
- DDAroo
- Serdeczny Borsuk
- Posty: 107
- Rejestracja: 27 cze 2009, 10:47
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: KDE Plasma
- Architektura: x86
- Lokalizacja: Kraków
- Kontakt:
Odp: Program klient - serwer 1wszy argument i wysyłający n jako drugi argument.
Możesz używać bibliotek? Łatwiej by Ci było ogarnąć komunikację sieciową przy użyciu biblioteki C++ niż API systemowego.
-
- Sędziwy Jeż
- Posty: 41
- Rejestracja: 04 wrz 2010, 14:14
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Program klient - serwer 1wszy argument i wysyłający n jako drugi argument.
Łatwiej czy nie takie było wymaganie. Już temat to zamknięcia poradziłem sobie i zaliczyłem dzięki za pomoc (znikomą) ale dzięki hehe.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości