Du wendest strtok jedes mal auf denselben String an, dadurch wird jedes Mal von vorne begonnen und der erste Token zurückgeben.
Um den String korrekt zu teilen, solltest du nur einmal mit dem String aufrufen und dann für die weiteren Tokens immer NULL als Argument übergeben. Dadurch setzt strtok seine Position auf dem selben String fort und liefert den nächsten Token zurück.
else if(message[0] == '/' && message[1] == 'p') {
char *msg = strdup(message);
printf("%s\n", msg);
char *tok = strtok(msg, " "); // /peer
printf("tok: %s\n", tok);
char *peername = strtok(NULL, " "); // name
printf("peername: %s\n", peername);
char *content = strtok(NULL, ""); // content
printf("content: %s\n", content);
}