Pasar arquivos do servidor para cliente via socket

1 resposta
A

ola pessoal.
sol novo no guj e na programação principalmente com sockets, e estou com um trabalho onde tenho que fazer um socket servidor listar e mandar arquivos para um socket cliente.
o servidor é este:

<?php

// porta TCP usada pelo servidor
$porta = 10000;

// cria o socket
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or
	die("*** Erro na criacao do socket");
socket_set_option($s, SOL_SOCKET, SO_REUSEADDR, 1);

// associa o socket `a porta escolhida
socket_bind($s, 0, $porta) or
	die("*** Erro no bind");

// prepara o socket para receber conexoes
socket_listen($s, 16) or
	die("*** Erro no listen");

// aguarda uma conexao
$cliente = socket_accept($s) or
	die("*** Erro no accept");

// envia uma mensagem inicial ao cliente
$msgout = "Ola, seja bem-vindo!\n\n";
socket_write($cliente, $msgout, strlen($msgout)) or
	die("*** Erro no envio de dados");

// repete ate que um dos lados encerre a conexao (com Ctrl-C)
do {
	// pede ao usuario que digite uma mensagem
	$msgout = "Digite uma mensagem e tecle Enter:\n";
	socket_write($cliente, $msgout, strlen($msgout)) or
		die("*** Erro no envio de dados");

	// espera o usuario enviar a mensagem
	$msgin = socket_read($cliente, 5000, PHP_NORMAL_READ) or
		die("*** Erro no recebimento de dados");

	// mostra a mensagem recebida
	echo "Mensagem recebida: " . $msgin . "\n";

	//manda mensagen de volta
	echo"resposta: ";
	$msgout = fgets(STDIN);
} while (true);

?>

e o cliente é este:

<?php

// IP e porta TCP usados pelo servidor
$ip = '10.2.5.2';
$porta = 10000;

// cria o socket
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or
	die("*** Erro na criacao do socket");

// conecta-se ao servidor
socket_connect($s, $ip, $porta) or
	die("*** Erro no connect");

// repete ate que um dos lados encerre a conexao (com Ctrl-C)
do {
	// pede ao usuario que digite uma mensagem
	echo "Digite uma mensagem e tecle Enter:\n";
	$msg = fgets(STDIN);

	// envia a mensagem ao servidor
	socket_write($s, $msg, strlen($msg)) or
		die("*** Erro no envio de dados");
} while (true);

?>

1 Resposta

peczenyj

E qual a sua dúvida?

Criado 7 de dezembro de 2016
Ultima resposta 7 de dez. de 2016
Respostas 1
Participantes 2