bom galera continuando o tutorial de socket em c, agora vamos ver como envia e recebe dados por ele, veja o servidor e o cliente q agente fez
servidor:
cliente:
no nosso servidor agente vai criar mais uma variavel do tipo int e atribuir o accept a ela no meu caso criei uma chamada socket2, depois disso agente vai criar um loop infinito vou usar o while para evitar q o programa finalize
agora basta criar uma array para receber os dados vou chamar a minha de texto, depois usar a funçao recv para receber os dados, passamos como argumento para ele a variavel q atribuimos ao accept, depois a array q vai receber os dados no meu caso e o texto, o tamanho maximo recebido vou colocar 1000, e depois um 0
o recv permite receber os dados, ja o send permite enviar, no meu exemplo eu to usando o servidor apenas para receber e exibir os dados e o cliente apena para enviar mais pode ser usado o recv e send em ambos, veja o cliente com uma entrada de dados do teclado e depois enviando para o servidor e ele exibindo, os argumentos do send e parecido com o recv
bom galera isso e o basico existe outras coisas q da para fazer outras funçoes etc, talvez eu faça outra tutorial ^^
by hacker fts315
servidor:
- Código:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "wsock32")
int main(void)
{
int socket1, tam;
struct sockaddr_in local;
struct sockaddr_in remoto;
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
socket1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(315);
bind(socket1,(struct sockaddr *)&local,sizeof(local));
listen(socket1,2);
accept(socket1,(struct sockaddr *)&remoto,&tam);
printf("conecto - server by hacker fts315");
closesocket(socket1);
}
cliente:
- Código:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "wsock32")
int main(void)
{
int socket1;
struct sockaddr_in servidor;
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
socket1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
servidor.sin_family = AF_INET;
servidor.sin_addr.s_addr = inet_addr("127.0.0.1");
servidor.sin_port = htons(315);
connect(socket1,(struct sockaddr *)&servidor,sizeof(servidor));
closesocket(socket1);
}
no nosso servidor agente vai criar mais uma variavel do tipo int e atribuir o accept a ela no meu caso criei uma chamada socket2, depois disso agente vai criar um loop infinito vou usar o while para evitar q o programa finalize
- Código:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "wsock32")
int main(void)
{
int socket1, tam , socket2;
struct sockaddr_in local;
struct sockaddr_in remoto;
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
socket1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(315);
bind(socket1,(struct sockaddr *)&local,sizeof(local));
listen(socket1,2);
socket2 = accept(socket1,(struct sockaddr *)&remoto,&tam);
printf("conecto - server by hacker fts315");
while(1)
{
}
closesocket(socket1);
}
agora basta criar uma array para receber os dados vou chamar a minha de texto, depois usar a funçao recv para receber os dados, passamos como argumento para ele a variavel q atribuimos ao accept, depois a array q vai receber os dados no meu caso e o texto, o tamanho maximo recebido vou colocar 1000, e depois um 0
- Código:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "wsock32")
int main(void)
{
int socket1, tam , socket2;
char texto[1000];
struct sockaddr_in local;
struct sockaddr_in remoto;
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
socket1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(315);
bind(socket1,(struct sockaddr *)&local,sizeof(local));
listen(socket1,2);
socket2 = accept(socket1,(struct sockaddr *)&remoto,&tam);
printf("conecto - server by hacker fts315\n\n");
while(1)
{
recv(socket2,texto,1000,0);
printf("%s \n",texto);
}
closesocket(socket1);
}
o recv permite receber os dados, ja o send permite enviar, no meu exemplo eu to usando o servidor apenas para receber e exibir os dados e o cliente apena para enviar mais pode ser usado o recv e send em ambos, veja o cliente com uma entrada de dados do teclado e depois enviando para o servidor e ele exibindo, os argumentos do send e parecido com o recv
- Código:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "wsock32")
int main(void)
{
int socket1, tam;
char texto[1000];
struct sockaddr_in servidor;
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
socket1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
servidor.sin_family = AF_INET;
servidor.sin_addr.s_addr = inet_addr("127.0.0.1");
servidor.sin_port = htons(315);
connect(socket1,(struct sockaddr *)&servidor,sizeof(servidor));
while(1)
{
printf("> ");
gets(texto);
send(socket1,texto,1000,0);
}
closesocket(socket1);
}
bom galera isso e o basico existe outras coisas q da para fazer outras funçoes etc, talvez eu faça outra tutorial ^^
by hacker fts315