Enviado em 03/04/2015 - 16:53h
Boa tarde, estou tentado fazer um programa como telnet e o netcat, mas so a parte de envia e receber texto, mas nao estou conseguido fazer de jeito nenhum, o codigo:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
// blibioteca para socket Tcp
#include "SocketTcp.h"
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/types.h>
// e deu um progama que eu fis
// esta fucinado, pega perfeitamente com o nc ou telnet
#define PORT 20108
#define IP "127.0.0.1"
#define MAX_BUFFER 2000
#define PASS "EXIT"
int main(int argc, char const *argv[]){
// estrutura que representa um socket
Socket s;
char bufferOUT[100];
char bufferIN[MAX_BUFFER];
fd_set in;
struct timeval tv;
int sso, retval;
// configura o todas estruturas e verifica erros
if(setSocket(&s, IP, PORT) == false){
perror("setSocket");
return 1;
}
// chama o connect e verifica erros
if(getConecao(&s) == false){
perror("getConecao");
return 1;
}
FD_ZERO(&in);
FD_SET(0, &in);
FD_SET(getFd(s), &in);
sso = fcntl(getFd(s), F_GETFL, 0);
fcntl(getFd(s), F_SETFL, sso | O_NONBLOCK);
tv.tv_sec = 1;
tv.tv_usec = 0;
while(true){
int rr = select(getFd(s)+1, &in, NULL, NULL, &tv);
printf("Test 1\n");
if(rr < 0){
perror("select");
break;
}
if(rr == 0){
tv.tv_sec = 1;
tv.tv_usec = 0;
}
// Aqui esta fucionado
if(rr && FD_ISSET(getFd(s), &in) ){
printf("Test 3\n");
int r;
memset(bufferIN, 0, MAX_BUFFER);
r = read(getFd(s), bufferIN, MAX_BUFFER);
if(r < 0){
perror("read");
break;
}
if(r == 0){
printf("Connection closed by the remote end\n");
break;
}
bufferIN[r] = '\0';
printf("recebido: %s\n",bufferIN);
fflush(0);
}
// Nao esta entrando aqui
if(rr && FD_ISSET(0, &in) ){
printf("Test 2\n");
int r;
memset(bufferOUT, 0, 100);
r = read(0, bufferOUT, 100);
if(r < 0){
perror("read");
break;
}
printf("enviado: %s\n", bufferOUT);
write(getFd(s), bufferOUT, r);
}
}
closeSocket(&s);
printf("Em Fim!!!\n");
return 0;
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Pegar a ultima ocorrencia viva (0)
O que você está ouvindo agora? [2] (167)
Sony Vaio placa Intel Centrono[condor Peak] rede wifi inidisponível (0)