Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum Liber 000 - Astrum Argentum

astrumargentum.org
from astrumargentum.org More from this publisher
01.01.2013 Views

#include #include int send(int Meusocket, const void *msg, size_t len, int flags); Onde : a) nsocket – Declaração de nosso socket; b)*msg – a mensagem propriamente dita alocada em um ponteiro; c) len – é o tamanho da mensagem; d) flags - Parametros adicionais. Já no caso do recv(), declaramos da seguinte maneira : #include #include int recv(int Meusocket, void *buf, int len, unsigned int flags); a) nsocket – Declaração de nosso socket; b)*buf – endereço da área d ebuffer de memória; c) len – é o tamanho do buffer de memória; d) flags - Parametros adicionais. E agora dois exemplos para fecharmos nosso tutorial. O Cliente e o servidor : #include #include #include #include #include #include #include #include #define PORTA 15000 #define MAXDATAM 2000 int main(int argc, char *argv[]) { int nsocket, numbytes; char buf[MAXDATAM]; struct hostent *he; struct sockaddr_in s_endereco; if (argc != 2) { fprintf(stderr,"Uso: cliente hostname\n"); exit(1); } 40

if ((he=gethostbyname(argv[1])) == NULL) { herror("gethostbyname"); exit(1); } if ((nsocket = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } s_endereco.sin_family = AF_INET; s_endereco.sin_port = htons(PORTA); s_endereco.sin_addr = *((struct in_addr *)he->h_addr); bzero(&(s_endereco.sin_zero), 8); if (connect(msocket,(struct sockaddr *)&s_endereco, sizeof(struct sockaddr) ) ==-1) { perror("connect"); exit(1); } if ((numbytes=recv(msocket, buf, MAXDATASIZE, 0)) == -1) { perror("recv"); exit(1); } buf[numbytes] = '\0'; printf("Conectado: %s",buf); close(nsocket); return 0; } E agora o servidor ! #include #include #include #include #include #include #include #include #define PORTA 15000 #define CONEXOES 10 main() { int nsocket, newsocket; struct sockaddr_in server_endereco; struct sockaddr_in endereco_cliente; int tam; if ((nsocket = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } server_endereco.sin_family = AF_INET; 41

if ((he=gethostbyname(argv[1])) == NULL) {<br />

herror("gethostbyname");<br />

exit(1);<br />

}<br />

if ((nsocket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {<br />

perror("socket");<br />

exit(1);<br />

}<br />

s_endereco.sin_family = AF_INET;<br />

s_endereco.sin_port = htons(PORTA);<br />

s_endereco.sin_addr = *((struct in_addr *)he->h_addr);<br />

bzero(&(s_endereco.sin_zero), 8);<br />

if (connect(msocket,(struct sockaddr *)&s_endereco, sizeof(struct<br />

sockaddr)<br />

) ==-1) {<br />

perror("connect");<br />

exit(1);<br />

}<br />

if ((numbytes=recv(msocket, buf, MAXDATASIZE, 0)) == -1) {<br />

perror("recv");<br />

exit(1);<br />

}<br />

buf[numbytes] = '\0';<br />

printf("Conectado: %s",buf);<br />

close(nsocket);<br />

return 0;<br />

}<br />

E agora o servidor !<br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

#define PORTA 15<strong>000</strong><br />

#define CONEXOES 10<br />

main()<br />

{<br />

int nsocket, newsocket;<br />

struct sockaddr_in server_endereco;<br />

struct sockaddr_in endereco_cliente;<br />

int tam;<br />

if ((nsocket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {<br />

perror("socket");<br />

exit(1);<br />

}<br />

server_endereco.sin_family = AF_INET;<br />

41

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!