Ich habe Probleme mit meinem Code.Mein Client sendet nicht korrekt an den Server
Ich habe diesen Client mit Posix-Warteschlange. Ist eine POSIX-Queue-Kommunikation mit einem Conc-Server. Die Frage ist nicht beantwortet.
mqd_t server;
mqd_t client;
struct request req; //char *name, int pos, int op...
struct reply rep; //int num, int ret...
struct mq_attr attr;
attr.mq_maxmsg = 1;
attr.mq_msgsize = sizeof(struct reply);
client = mq_open("/CLIENT", O_CREAT|O_RDONLY, 0700, &attr);
server = mq_open("/SERVER", O_WRONLY);
req.name = name;
req.op = 3;
mq_send (server, (const char *) &req, sizeof(struct req),0);
mq_receive(client, (char*)&rep, sizeof(struct reply), 0);
mq_close(server);
mq_close(client);
mq_unlink("/CLIENT");
Und dieser Server
struct db mydb[100]; //Struct with char*name....
for (int i = 0; i<100;i++){
strcpy(mydb[i].name,"");
mydb[i].vec =NULL;
mydb[i].size =0;
}
mqd_t server;
struct request mess;
struct mq_attr q_attr;
pthread_attr_t t_attr;
q_attr.mq_maxmsg = 10;
q_attr.mq_msgsize=sizeof(struct request);
server = mq_open ("/SERVER", O_CREAT|O_RDONLY, 0700, &q_attr);
if (server == -1){
perror("Er");
}
pthread_mutex_init (&mutex_msj, NULL);
pthread_cond_init (&cond_msj, NULL);
pthread_attr_init(&t_attr);
pthread_attr_setdetachstate(&t_attr, PTHREAD_CREATE_DETACHED);
while(1){
pthread_t thid;
mq_receive(server, (char*) &mess, sizeof(struct request), 0);
UND IST HIER DAS PROBLEM. WENN ICH PRINF MESS.OP HABE, WÜRDE ICH "3" ERHALTEN. Die Nummer, die ich dem Kunden zugewiesen habe. Und wenn ich das tue, habe mess.op 0, nicht 3.
pthread_create(&thid, &t_attr, (void*)func, &mess);
...
...
...
...
}
Danke.
Ihr Code ist zu chaotisch, können Sie ihn formatieren, damit er lesbar ist? –
Bitte lesen Sie die Tour, und tun Sie dies nicht. –