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;
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Primeira vez utilizando Linux Ubuntu 22.04 e já tenho problemas… (7)
Problema com nome composto e organização na tela do yad (1)
Formatando cartão de memoria que nao formata[AJUDA] (18)
warsaw parou de funcionar após atualização do sistema (solução) (1)