Aqui você vê as diferenças entre duas revisões dessa página.
— |
shutdown [d/mY H:i] (atual) |
||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Função shutdown ====== | ||
+ | |||
+ | Sintaxe: | ||
+ | |||
+ | ''[[tipos_dados|int]] shutdown([[tipos_dados|int]] s, [[tipos_dados|int]] how);'' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | A função **shutdown** finaliza toda ou parte de uma conexão full-duplex. As funções retorna 0 (zero) em caso de sucesso ou –1 se houve algum erro. | ||
+ | Se for passado **SHUT_RD** para ''how'', as recepções serão desabilitas. Caso seja passado **SHUT_WR** as transmissões serão desabilitadas e se for **SHUT_RDWR**, toda a conexão será desabilitada. | ||
+ | |||
+ | |||
+ | A função [[close]] é utilizada para finalizar uma conexão [[socket]]. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | |||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | #include <strings.h> | ||
+ | #include <errno.h> | ||
+ | #include <sys/types.h> | ||
+ | #include <sys/socket.h> | ||
+ | #include <netinet/in.h> | ||
+ | #include <arpa/inet.h> | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int iSock; | ||
+ | int iBytes; | ||
+ | struct sockaddr_in dest_addr; | ||
+ | char buffer[100]; | ||
+ | |||
+ | iSock = socket(AF_INET, SOCK_STREAM, 0); | ||
+ | if( iSock == -1) | ||
+ | { | ||
+ | perror("socket:"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | dest_addr.sin_family = AF_INET; | ||
+ | dest_addr.sin_port = htons(4950); | ||
+ | dest_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); | ||
+ | bzero(&(dest_addr.sin_zero), 8); | ||
+ | |||
+ | if( connect(iSock, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) < 0) | ||
+ | { | ||
+ | perror("connect:"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | if ((iBytes=recv(iSock, buffer, 100, 0)) < 0 ) | ||
+ | { | ||
+ | perror("recv"); | ||
+ | exit(1); | ||
+ | } | ||
+ | buffer[iBytes] = '\0'; | ||
+ | |||
+ | printf("Recebido: %s",buffer); | ||
+ | |||
+ | shutdown(iSock,SHUT_RDWR); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | --- //[[marcos@laureano.eti.br|Marcos Laureano]] 2008/04/25 06:40// | ||