{"action":"opened","issue":{"url":"https://api.github.com/repos/fernandeznico/SOII-TP1/issues/1","labels_url":"https://api.github.com/repos/fernandeznico/SOII-TP1/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/fernandeznico/SOII-TP1/issues/1/comments","events_url":"https://api.github.com/repos/fernandeznico/SOII-TP1/issues/1/events","html_url":"https://github.com/fernandeznico/SOII-TP1/issues/1","id":66478788,"number":1,"title":"Requerimientos","user":{"login":"fernandeznico","id":11809597,"avatar_url":"https://avatars.githubusercontent.com/u/11809597?v=3","gravatar_id":"","url":"https://api.github.com/users/fernandeznico","html_url":"https://github.com/fernandeznico","followers_url":"https://api.github.com/users/fernandeznico/followers","following_url":"https://api.github.com/users/fernandeznico/following{/other_user}","gists_url":"https://api.github.com/users/fernandeznico/gists{/gist_id}","starred_url":"https://api.github.com/users/fernandeznico/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fernandeznico/subscriptions","organizations_url":"https://api.github.com/users/fernandeznico/orgs","repos_url":"https://api.github.com/users/fernandeznico/repos","events_url":"https://api.github.com/users/fernandeznico/events{/privacy}","received_events_url":"https://api.github.com/users/fernandeznico/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-04-05T20:24:46Z","updated_at":"2015-04-05T20:24:46Z","closed_at":null,"body":"Sistemas Operativos II\r\n\r\nTrabajo Práctico 1 – IPC Sockets\r\nElabore un conjunto de programas para un Network Time Protocol (NTP) en lenguaje\r\n\"C\", que cumpla con las siguientes especificaciones:\r\n\r\n• Debe existir un programa cliente y un programa servidor NTP.\r\n\r\n• El programa servidor utilizará la capa de transporte TCP, puerto 6020.\r\n\r\n• El timestamp debe contener el día de la semana, día del mes, mes, año, hora,\r\nminutos y segundos.\r\n\r\n• El programa cliente utilizará un puerto TCP, asignado de manera aleatoria por\r\nel sistema operativo, al momento de la conexión.\r\n\r\n• Al inicio se deberá asignar todos ceros a su registro de timestamp.\r\n\r\n• Una vez establecida la sesión entre el programa cliente y el servidor, la\r\naplicación proveerá de un \"prompt\" que identifica la misma. En el contexto de\r\neste \"prompt\" se podrán intercambiar mensajes entre cliente y servidor e ir\r\nmostrándose en pantalla. Existen comandos especiales que deben poder\r\nejecutarse tanto desde el cliente como del servidor:\r\no updatetime: mensaje que se le envía al servidor solicitando su\r\ntimestamp. Este al recibirlo, se fija en el time de su sistema, actualiza su\r\nregistro y luego lo envía al cliente. El cliente al recibirlo actualiza su\r\nregistro con el nuevo timestamp y lo muestra en pantalla.\r\no settime: se envía desde el cliente, un archivo de texto plano al servidor,\r\ncon el registro de timestamp. El receptor indicará cuando el archivo se\r\nreciba tanto local como remotamente.\r\no timestamp: muestra el registro de timestamp local.\r\n\r\n• Para la transferencia del contenido de archivo, se deberá utilizar la capa de\r\ntransporte UDP, puerto 6020.\r\n\r\n• Durante la operación de transferencia del archivo debe bloquearse el prompt\r\ndel cliente hasta tanto finalice la transferencia.\r\n\r\n• Tanto la especificación del protocolo de red en la capa de aplicación, así como\r\nla elección de la interfaz de usuario del programa cliente, quedan liberadas a\r\ncriterio del estudiante.\r\n\r\n• Debe incluirse un mecanismo de control y manejo de errores en ambos\r\nextremos para el manejo de archivos, esto es, si un comando no es reconocido\r\no el argumento de un comando es no válido (ej. send <directorio-invalido>),\r\ndebe comunicar esta situación ante la imposibilidad de ejecutarlo.\r\n\r\n• Cada operación ejecutada en el servidor deberá ser registrada en un\r\narchivo local al cliente llamado “ntp.log” a modo de respaldo. En este se\r\ndeberá guardar cada operación indicando fecha y hora de cada\r\noperación, comando ejecutado y el resultado de dicha ejecución (Éxito o\r\nTipo de Error).\r\n\r\n• Se deberá proveer los archivos fuente del cliente y del servidor, así como\r\ncualquier otro archivo asociado a la compilación, si existiera (archivos de\r\nproyecto \"Makefile\", por ejemplo). Se debe asumir que las pruebas de\r\ncompilación se realizarán en un equipo que cuenta con las herramientas típicas\r\nde consola para el desarrollo de programas (Ej: gcc, make), y NO se cuenta\r\ncon herramientas \"GUI\" para la compilación de los mismos (Ej: eclipse).\r\n\r\n• Se deberá proveer un instructivo que describa brevemente una secuencia\r\ntípica de comandos de la aplicación, que acrediten el cumplimiento de las\r\nespecificaciones del programa.\r\n"}}