![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| High-Level-Programmierung Post Fragen zu C, C + +, Java, SQL, und andere Programmiersprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Client-und Server-Programme | JCR | High-Level-Programmierung | 8 | 04-28-2009 05:06 PM |
| Client / Server-Ausgabe | geauxtn | AIX | 5 | 07-30-2007 09:38 AM |
| Client / Server | Bole | UNIX for Dummies Questions & Answers | 2 | 10-30-2006 02:19 AM |
| NTP-Server und NTP-Client | bubba112557 | SUN Solaris | 1 | 05-10-2005 11:37 AM |
| PIPEs und Named Pipes (FIFO) Puffergröße | Jus | Dateisysteme, Festplatten und Memory | 1 | 08-20-2004 11:14 AM |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
||||
|
Client / Server-Rohre
hier ist das Konzept: Der Client liest einen Pfadnamen aus der Standardeingabe und schreibt sie in pipe1.The-Server liest diese Pfadnamen aus der pipe1 und versucht, die Datei zu öffnen für reading.If kann der Server die Datei öffnen, der Server antwortet, indem Sie die Datei und schreiben sie zu pipe2, sonst schreibt der Server eine Fehlermeldung an den gleichen pipe.The Client liest aus dem pipe2 und schreibt sie auf die Standard-Ausgabe hier ist mein Code: Code:
#include <stdio.h>
#include <string.h>
#define maxsize 1000
char buffer [maxsize];
void client(int readfd,int writefd)
{
puts("give pathname:");
gets(buffer);
write(writefd,buffer,strlen(buffer));
//sleep(10);
while((read(readfd,buffer,strlen(buffer)))>0);
printf("%s/n",buffer);
}
void server(int readfd,int writefd)
{
FILE * fp;
char line[100];
//sleep(10);
read(readfd,buffer,strlen(buffer));
fp=fopen(buffer,"r");
if(fp==NULL)
{
strcpy(buffer,"cannot oepn file");
write(writefd,buffer,strlen(buffer));
}
else
while(fgets(line,100,fp)!=NULL)
write(writefd,line,100);
}
int main()
{
int pipe1[2],pipe2[2];
int childpid;
int status;
pipe(pipe1);
pipe(pipe2);
childpid=fork();
if(childpid>0)
{
close(pipe1[0]);
close(pipe2[1]);
client(pipe2[0],pipe1[1]);
wait(&status);
exit(0);
}
else
{
close(pipe1[1]);
close(pipe2[0]);
server(pipe1[0],pipe2[1]);
exit(0);
}
}
Tatsächlich, ich verstehe, dass es einige Probleme mit den Bedingungen, die Rasse ist der Grund, warum ich 2 Schlafplätze Befehle, aber immer noch nicht funktioniert .. generell möchte ich sychronize die Lese-und Schreib-Befehle der Client-und Server, aber ich weiß nicht, wie ... wenn jemand hat die Zeit, um zu sehen, den Code ein und geben Sie mir einige Ratschläge, wird es wirklich zu schätzen ..... thanks in advance .. |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|