receber info de um sokcet

1. receber info de um sokcet

Harrison Martins
hmweb

(usa Slackware)

Enviado em 04/04/2011 - 17:54h

Boa tarde galera, estou precisando de um script que abra server socket em uma porta especifica, que ele receba as informacoes e depois jogue para uma banco ou arquivos, voce tem algum exemplo deste tipo de socket?

estou com um ex em php mas ele fica canido a tod instante.

desde ja agradeco .


  


2. Re: receber info de um sokcet

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 07/04/2011 - 09:19h

Servidor em shell script?

Creio que o bash ou similares não tem um built-in para construções de socket. O modo mais rápido é usar um comando externo que nem o netcat.

$ nc -l <porta> # Isso no netcat no ubuntu

O netcat do *Hobbit* vai ficar assim:

$ nc -lp <porta>

Para ter mais saídas use a opção -vv....

Em shell script não há muito o que fazer nessa parte de sockets a não ser criar conexões e se conectar via programas externos (netcat, telnet, etc)

Acho que é isso.
t+


3. Re: receber info de um sokcet

Harrison Martins
hmweb

(usa Slackware)

Enviado em 08/04/2011 - 01:44h

Obrigado pelo contato, meu problema nao e penas monitorar, tenho que pegar toda informacao que vem pelo socket e grava em um banco de dados, tenho o mesmo rodando em php so que fica caindo,


4. Re: receber info de um sokcet

Marcos Paulo Ferreira
daemonio

(usa Slackware)

Enviado em 11/04/2011 - 16:43h

Blz Hm... mas dependendo do problema dá para fazer com o netcat sim. Caso seja só pegar os dados e mandar para um banco de dados, entao isso é possível ("escorregando" os dados por pipes).

Se der para explicar melhor o que você tá querendo talvez dê para resolver via shell script mesmo.

t+


5. Re: receber info de um sokcet

Harrison Martins
hmweb

(usa Slackware)

Enviado em 12/04/2011 - 10:16h

Irei postar o codigo que tenho rodando em php, mas ele fica caindo, por isso tenho que mudar.
<?php

// set some variables
$host = "192.168.0.254";
$port = 4658;

// don't timeout!
set_time_limit(0);

// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");

// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");
for ($i = 1; $i <= 100; $i++) {
//echo $i."\n";
// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

// read client input

$input = socket_read($spawn, 5000) or die("Could not read input\n");

$input1 = substr($input, 0, 1);

if ($input1=="#") {


// clean up input string
$input = trim($input);

mysql_pconnect("localhost", "teste", "1234") or die(mysql_error());
mysql_select_db("psrclub") or die(mysql_error());

//recebe a string em uma variavel
$minhastring = $input;



//guarda dados de registro
$datetime= date("Y-m-d H:i:s");
$aux = explode('#',$minhastring);
$minhastring = $aux[6];
$imei = $aux[1];



//busca id usu�rio
$sql_membros = mysql_query("SELECT * FROM pt_unit where imei = $imei");
$linha = mysql_fetch_array($sql_membros);
$unit_id = $linha['id'];

//Quebra lat e long
$aux = explode(',',$minhastring);

//manipula��o data do GPS
$hor = substr($aux[1], -10, -8);
$min = substr($aux[1], -8, -6);
$seg = substr($aux[1], -6, -4);
$teste = $aux[1];
$hora = $hor.":".$min.":".$seg;
$dia = substr($aux[9], 0, -4);
$mes = substr($aux[9], 2, -2);
$ano = substr($aux[9], -2);
$ano = "20".$ano;
$data = $ano."-".$mes."-".$dia;
$datetime_received = $data." ".$hora;

$inclinacao = $aux[8];
$latitude = $aux[3];
$sinal_lat = $aux[4];
$longitude = $aux[5];
$sinal_long = $aux[6];
$velocidade = $aux[7];
$velocidade = $velocidade * 1.6109 ;
$velocidade = round($velocidade , 2);

$sattotal = 4;
$fixtype = 3;
$raw_input = $minhastring;

if ( $sinal_lat === "S" ) { $mult_lat = -1; };
if ( $sinal_lat === "N" ) { $mult_lat = 1; };
if ( $sinal_long === "W" ) { $mult_long = -1; };
if ( $sinal_long === "E" ) { $mult_long = 1; };


//LATITUDE pega valores decimais, separa e converte
$lat_x = substr($latitude, -7);
$lat_y = substr($latitude, 0, -7);
$lat_x = $lat_x / 60 ;
$latitude = $lat_x + $lat_y;
$latitude = $latitude * $mult_lat;

//LONGITUDE pega valores decimais, separa e converte
$long_x = substr($longitude, -7);
$long_y = substr($longitude, 0, -7);
$long_x = $long_x / 60 ;
$longitude = $long_x + $long_y;
$longitude = $longitude * $mult_long;


if ($velocidade < 1) {
$fixtype = 7;
}


//Registra no banco a informa��o
mysql_query("INSERT INTO pt_position(unit_id, datetime, datetime_received, lat, lon, alt, deg, speed_km, speed_kn, sattotal, fixtype, raw_input, hash)
VALUES ('$unit_id', '$datetime_received', '$datetime', '$latitude', '$longitude' , '000' , '$inclinacao' , '$velocidade' , '0' , '$sattotal' , '$fixtype' , '$imei' , '$input')") or die(mys$

}


}










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts