This commit is contained in:
Lorenzo Bianchi 2023-05-29 15:01:11 +02:00
parent 87bc2e65b3
commit f1c9fa5746
9 changed files with 33 additions and 19 deletions

View File

@ -6,6 +6,8 @@
#define MAX_NAME 16 #define MAX_NAME 16
#define MSGQKEY '9'
extern int _MSGQID; extern int _MSGQID;
#define MSG 1 #define MSG 1

View File

@ -7,9 +7,12 @@
#define CLIENT1 1 #define CLIENT1 1
#define SERVER 2 #define SERVER 2
#define SEMKEY 'P'
extern int _SEMID; extern int _SEMID;
void setupServerSem(); void setupServerSem();
void setupClientSem();
int getSemid(key_t key, int size); int getSemid(key_t key, int size);
void semOp(int semid, short sem_num, short sem_op); void semOp(int semid, short sem_num, short sem_op);

View File

@ -3,6 +3,8 @@
#include <structures.h> #include <structures.h>
#define SHMKEY 'H'
extern int _SHMID; extern int _SHMID;
void setupServerShm(); void setupServerShm();

View File

@ -26,26 +26,16 @@ int main(int argc, char *argv[]){
printf("Il mio pid per killarmi: %d\n", getpid()); //TMP printf("Il mio pid per killarmi: %d\n", getpid()); //TMP
msg_t msg; msg_t msg;
setupClient(argc, argv); //FIXME: msg é tmp setupClient(argc, argv);
printf("fin qua funzia (spero)\n"); printf("fin qua funzia (spero) %d\n", _SEMID);
scanf("%d"); scanf("%d");
// SEM
printf(PCLIENT "Setting up sem\n");
key_t semKey = ftok(KEYFILE, 'S');
if ((_SEMID = semget(semKey, 3, S_IRUSR | S_IWUSR | IPC_CREAT)) == -1) {
errExit("getsem", "F4Client");
}
//
// aspetto che il server mi dia il permesso di collegarmi e segnalo collegamento al server // aspetto che il server mi dia il permesso di collegarmi e segnalo collegamento al server
semOp(_SEMID, msg.player_id, -1); semOp(_SEMID, msg.player_id, -1);
printf(PCLIENT "Connecting to server...\n"); printf(PCLIENT "Connecting to server...\n");
semOp(_SEMID, 2, 1); semOp(_SEMID, 2, 1);
// mando i miei dati al server // mando i miei dati al server
player_ds player = {.mtype = 3, .id = msg.player_id, .pid = getpid()}; player_ds player = {.mtype = 3, .id = msg.player_id, .pid = getpid()};
strcpy(player.name_player, argv[1]); strcpy(player.name_player, argv[1]);

View File

@ -27,9 +27,14 @@ void setupClient(int argc, char *argv[]) {
// MSGQ // MSGQ
setupClientMsgq(); setupClientMsgq();
printf("msgq: %d\n", _MSGQID);
// SHM // SHM
setupClientShm(); setupClientShm();
printf("shm: %d\n", _SHMID);
setupClientSem();
printf("sem: %d\n", _SEMID);
} }
void checkClientinput(int argc, char *argv[]){ void checkClientinput(int argc, char *argv[]){

View File

@ -28,7 +28,7 @@ void setupClientMsgq() {
} }
void openMsgq() { void openMsgq() {
key_t msgKey = ftok(KEYFILE, 'M'); key_t msgKey = ftok(KEYFILE, MSGQKEY);
_MSGQID = msgget(msgKey, IPC_CREAT | S_IRUSR | S_IWUSR); _MSGQID = msgget(msgKey, IPC_CREAT | S_IRUSR | S_IWUSR);
if (_MSGQID == -1){ if (_MSGQID == -1){
errExitMsg("msgget"); errExitMsg("msgget");

View File

@ -12,7 +12,7 @@ int _SEMID;
void resetServerSem(int semid); void resetServerSem(int semid);
void setupServerSem() { void setupServerSem() {
key_t semKey = ftok(KEYFILE, 'S'); key_t semKey = ftok(KEYFILE, SEMKEY);
_SEMID = semget(semKey, 3, IPC_CREAT | S_IRUSR | S_IWUSR); _SEMID = semget(semKey, 3, IPC_CREAT | S_IRUSR | S_IWUSR);
if (_SEMID == -1) { if (_SEMID == -1) {
errExit("getsem", "F4Server"); errExit("getsem", "F4Server");
@ -21,6 +21,15 @@ void setupServerSem() {
resetServerSem(_SEMID); resetServerSem(_SEMID);
} }
void setupClientSem() {
key_t semKey = ftok(KEYFILE, SEMKEY);
_SEMID = semget(semKey, 3, IPC_CREAT | S_IRUSR | S_IWUSR);
if (_SEMID == -1) {
errExit("getsem", "F4Client");
}
}
void semOp(int semid, short sem_num, short sem_op) { void semOp(int semid, short sem_num, short sem_op) {
struct sembuf sop = {.sem_num = sem_num, .sem_op = sem_op, .sem_flg = 0}; struct sembuf sop = {.sem_num = sem_num, .sem_op = sem_op, .sem_flg = 0};

View File

@ -27,7 +27,7 @@ void setupClientShm() {
} }
int getShmid() { int getShmid() {
int shmid = shmget(ftok(KEYFILE, 'h'), _ROWS * _COLLUMS * sizeof(tile_t), IPC_CREAT | S_IRUSR | S_IWUSR); int shmid = shmget(ftok(KEYFILE, SHMKEY), _ROWS * _COLLUMS * sizeof(tile_t), IPC_CREAT | S_IRUSR | S_IWUSR);
if (shmid == -1) { if (shmid == -1) {
errExit("shmget", "getShmid"); errExit("shmget", "getShmid");
} }

View File

@ -26,21 +26,24 @@ void setupServer(int argc, char *argv[]){
_ROWS = _INPUT_S.rows; _ROWS = _INPUT_S.rows;
_COLLUMS = _INPUT_S.collums; _COLLUMS = _INPUT_S.collums;
// MSGQ
printf(PSERVER "Setting up msgq\n"); // FIXME: mettere printf nelle funzioni
setupServerMsgq();
// SIGNAL // SIGNAL
printf(PSERVER "Setting up signals\n"); printf(PSERVER "Setting up signals\n");
setupServerSignalHandler(); setupServerSignalHandler();
// MSGQ
printf(PSERVER "Setting up msgq\n"); // FIXME: mettere printf nelle funzioni
setupServerMsgq();
printf("msgq: %d\n", _MSGQID);
// SEM // SEM
printf(PSERVER "Setting up sem\n"); printf(PSERVER "Setting up sem\n");
setupServerSem(); setupServerSem();
printf("sem: %d\n", _SEMID);
// SHM // SHM
printf(PSERVER "Setting up shm\n"); printf(PSERVER "Setting up shm\n");
setupServerShm(); setupServerShm();
printf("shm: %d\n", _SHMID);
} }