player connection
This commit is contained in:
parent
a31aedcdc4
commit
f30ad21a7f
4
Makefile
4
Makefile
|
@ -67,8 +67,8 @@ MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|||
MKFILE_DIR := $(dir $(mkfile_path))
|
||||
|
||||
ARGSSERVER := 6 7 O X
|
||||
ARGSCLIENT1 := cacca
|
||||
ARGSCLIENT2 := molla
|
||||
ARGSCLIENT1 := Cacca
|
||||
ARGSCLIENT2 := Molla
|
||||
|
||||
test: comp
|
||||
x-terminal-emulator -e $(MKFILE_DIR)$(TARGET2) $(ARGSCLIENT1)
|
||||
|
|
|
@ -50,6 +50,6 @@ typedef struct {
|
|||
int id;
|
||||
char name_player[MAX_NAME];
|
||||
pid_t pid;
|
||||
} player_names_t;
|
||||
} player_ds;
|
||||
|
||||
#endif
|
|
@ -110,17 +110,18 @@ int main(int argc, char *argv[]){
|
|||
semOp(semid, 2, 1); // finito operazioni di connessione
|
||||
|
||||
|
||||
// mando il mio nome al server
|
||||
player_names_t name = {.mtype = 3, .id = msg.player_id, .pid = getpid()};
|
||||
strcpy(name.name_player, argv[1]);
|
||||
if (msgsnd(msgid, &name, sizeof(player_names_t) - sizeof(long), 0) == -1) {
|
||||
errExit("msgsnd", "mandare nome");
|
||||
}
|
||||
// mando i miei dati al server
|
||||
player_ds player = {.mtype = 3, .id = msg.player_id, .pid = getpid()};
|
||||
strcpy(player.name_player, argv[1]);
|
||||
if (msgsnd(msgid, &player, sizeof(player_ds) - sizeof(long), 0) == -1) {
|
||||
errExit("msgsnd", "mandare nome");
|
||||
}
|
||||
|
||||
printf("%s\n", name.name_player);
|
||||
printfClient("Searching for oponent...\n");
|
||||
|
||||
semOp(semid, msg.player_id, -1);
|
||||
|
||||
printfServer("Opponent found\n");
|
||||
|
||||
|
||||
move_t move = {.mtype = 2};
|
||||
|
|
|
@ -37,8 +37,12 @@ void sigHandlerServer(int sig) {
|
|||
if (sig == SIGTERM || sig == SIGHUP) {
|
||||
printf("\n");
|
||||
printfServer("Terminating players");
|
||||
kill(pids[0], SIGTERM);
|
||||
kill(pids[1], SIGTERM);
|
||||
if (pids[0] > 0) {
|
||||
kill(pids[0], SIGTERM);
|
||||
}
|
||||
if (pids[1] > 0){
|
||||
kill(pids[1], SIGTERM);
|
||||
}
|
||||
|
||||
// msgq
|
||||
if (msgid) {
|
||||
|
@ -160,34 +164,35 @@ int main(int argc, char *argv[]){
|
|||
//FIXME: forse non serve perche tanto deve aspettare che i player gli mandono un messaggio con il loro nome (a cose servono i semafori se ci sono i messaggi che fanno l'attesa non in polling aaaaaaaaa)
|
||||
semOp(semid, 2, -1);
|
||||
|
||||
player_names_t names;
|
||||
player_ds player;
|
||||
char name[2][MAX_NAME];
|
||||
pids[2];
|
||||
|
||||
// ricevuta nome primo client
|
||||
if (msgrcv(msgid, &names, sizeof(player_names_t) - sizeof(long), 3, 0) == -1) {
|
||||
if (msgrcv(msgid, &player, sizeof(player_ds) - sizeof(long), 3, 0) == -1) {
|
||||
errExit("msgrcv", "ricevuta primo nome");
|
||||
}
|
||||
|
||||
strcpy(name[names.id], names.name_player);
|
||||
pids[names.id] = names.pid;
|
||||
strcpy(name[player.id], player.name_player);
|
||||
pids[player.id] = player.pid;
|
||||
|
||||
printfServer("Player ");
|
||||
printf("%s connected\n", name[names.id]);
|
||||
printf("%s connected\n", name[player.id]);
|
||||
|
||||
// aspetto secondo client
|
||||
semOp(semid, 2, -1);
|
||||
// ricevuta nome secondo client
|
||||
if (msgrcv(msgid, &names, sizeof(player_names_t) - sizeof(long), 3, 0) == -1) {
|
||||
if (msgrcv(msgid, &player, sizeof(player_ds) - sizeof(long), 3, 0) == -1) {
|
||||
errExit("msgrcv", "ricevuta secondo nome");
|
||||
}
|
||||
// name[names.id] = names.name_player;
|
||||
strcpy(name[player.id], player.name_player);
|
||||
pids[player.id] = player.pid;
|
||||
|
||||
printfServer("Player ");
|
||||
printf("%s connected\n", name[names.id]);
|
||||
|
||||
|
||||
printf("%s connected\n", name[player.id]);
|
||||
|
||||
semOp(semid, 0, 1);
|
||||
semOp(semid, 1, 1);
|
||||
|
||||
|
||||
// PARTITA
|
||||
|
|
Loading…
Reference in New Issue