PC (Programação em Comunicações) Data: Quinta-feira, 28 de Setembro de 2006 Hora: 10h00m Duração: 2,5 horas Sala: B118 Nota: Com consulta de apontamentos em papel Época: Recurso Docentes: Jaime Dias, Pedro Souto, Isidro Vila Verde Questão 1 (7 valores) 1. O script perl abaixo foi executado sobre os dados presento no anexo 1 ($,,$\) = ('',"\n"); my $r; while(<>){ next unless /TCP/; my @ips = $_ =~ /((?:\d{1,3\.){4)(\d{1,5)\s*>\s*((?:\d{1,3\.){4)(\d{1,5)/; $r->{$ips[0]->{$ips[2]->{$ips[1]->{$ips[3]++; foreach my $ip1 (keys %$r){ foreach my $ip2 (keys %{$r->{$ip1){ foreach my $p1 (keys %{$r->{$ip1->{$ip2){ foreach my $p2 (keys %{$r->{$ip1->{$ip2->{$p1){ print "$ip1:$p1 => $ip2:$p2 = ", $r->{$ip1->{$ip2->{$p1->{$p2; a) Apresente o resultado b) Diga qual a expressão Perl que é necessária adicionar ao print para na mesma linha, além do resultado de a => b, obtermos também o resultado de b => a c) Relativamente à alinea anterior iremos obter o dobro das linhas necessárias no resultado. Apresente a linha de código adicional para evitar essa duplicação de informação
Questão 2 (5 valores) Considere os códigos XSDL e XSLT a seguir apresentados <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:complextype name="viagem"> <xs:sequence> <xs:element name="local" maxoccurs="unbounded"> <xs:complextype> <xs:sequence maxoccurs="unbounded"> <xs:element name="descricao" type="xs:string"/> <xs:element name="site" type="xs:string" minoccurs="0"/> <xs:attribute name="nome" type="xs:string" use="required"/> <xs:attribute name="site" type="xs:string" use="optional"/> </xs:element> <xs:attribute name="de" type="xs:date" use="required"/> <xs:attribute name="a" type="xs:date" use="required"/> <xs:element name="viagens"> <xs:complextype> <xs:sequence maxoccurs="unbounded" minoccurs="3"> <xs:element name="pais" type="viagem"/> <xs:element name="ilha" type="viagem" minoccurs="0"/> <xs:element name="arquipelago" type="viagem" minoccurs="0"/> </xs:element> </xs:schema>
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="node()"> <xsl:copy> <xsl:apply-templates select="node()"/> <xsl:apply-templates select="@*"/> </xsl:copy> <xsl:template match="@*"> <xsl:element name="{name()"> <xsl:value-of select="."/> </xsl:element> <xsl:template match="*[not(*)]"> <xsl:attribute name="{name()"><xsl:value-of select="."/></xsl:attribute> </xsl:stylesheet> a) Apresente um XML válido b) Apresente o resultado do XML da alínea anterior depois de transformado pelo XSLT c) Apresente o XSD dos documentos XML gerados pela transformação via XSLT. Nota: Assuma, obviamente, que o XSLT só é usado para transformar documentos válidos segundo o XSD apresentado Questão 3 (0,5 valores) Diga qual é a classe que pertence à package java.lang cujos objectos não necessitam do operador new para serem inicializados. Questão 4 (0,5 valores) Comente a frase: Em Java é possível invocar dois construtores durante o processo de inicialização de um objecto.. Questão 5 (0,5 valores) Ao contrário da sobrecarga, onde a decisão do método a invocar é feita durante a compilação, na sobreposição a decisão só pode ser feita em run-time (late binding ou Dynamic Bind). Diga porquê.
Questão 6 (3,5 valores) Host origem Agent e de Relay Host destino Escreva uma aplicação em Java que implemente o Agente de Relay representado na figura. As comunicações são baseadas em UDP, porto 5000. A tarefa do agente consiste em repetir indefinidamente o seguinte: 1. Fica à espera de receber datagramas de um (qualquer) host origem a. Cada datagrama recebido tem como payload o FQDN do host destino. 2. Tenta enviar um datagrama ao host destino, cujo conteúdo é o endereço IP do host origem. 3. Por cada datagrama enviado o agente deve acrescentar no ficheiro log.txt uma linha com a hora, endereço IP do host origem e endereço IP do host destino.
Questão 7 (3 valores) Considere a seguinte "string": <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <n:alertcontrol xmlns:n="http://example.org/alertcontrol"> <n:priority>1</n:priority> <n:expires>2001-06-22t14:00:00-05:00</n:expires> </n:alertcontrol> </env:header> <env:body> <m:alert xmlns:m="http://example.org/alert"> <m:msg>pick up Mary at school at 2pm</m:msg> </m:alert> </env:body> </env:envelope> a) Diga o que é e identifique os seus componentes principais. b) Seria possível usar JAX-RPC para gerar esta "string"? Em caso afirmativo, defina a interface Java correspondente. (Caso considere a informação disponível insuficiente, complete-a à sua discrição mas justifique as suas opções.) Em caso negativo, justifique. c) Uma norma tipicamente associada a Web Services é a WSDL. Diga o que é a WSDL e qual a sua relação com a "string" apresentada acima.