Com enviar byte amb sufix al sòcol – PHP – SitePoint Forums

Ja s’ha resolt, obteniu la solució de DroopSnoot, $sulfix = sprintf(“%c%c%c%c”, 255, 254, 253, 252);

Tinc una tasca, enviar un missatge amb final sulfix. Si el missatge com $Message=”abcdef”
com escriure codi amb php, gràcies abans

El sufix en format hexadecimal és: {FF, FE, FD, FC}
L’estructura del missatge es pot veure a la secció de format del missatge.
El sufix és una matriu de bytes lliurada després d’enviar el missatge d’instrucció. El format del sufix lliurat
hauria de seguir el format següent.


On estàs atrapat? Com esteu enviant el missatge?

aquest és el meu codi i intento enviar-lo però no rep resposta. Quan li pregunto al venedor, va dir, no va rebre el missatge

"."n";
	$var_str = $var_str.''."n";
	$var_str = $var_str.''.($Namafile).''."n";
	$var_str = $var_str.''.($participantCode).''."n";
	$var_str = $var_str.''.($sourceAccount).''."n";
	$var_str = $var_str.''.($targetAccount).''."n";
	$var_str = $var_str.''.($securityCodeType).''."n";
	$var_str = $var_str.''.($securityCode).''."n";	
	$var_str = $var_str.''.($numberOfSecurities).''."n";
	$var_str = $var_str.''.($settlementDate).''."n";
	$var_str = $var_str.''.($description).''."n";
	$var_str = $var_str.''."n";
	$var_str = $var_str.''.' '.$F.$E.$D.$C;
	
	$message	= $var_str;
	echo "n"."Message To server :"."n".$message."n";
	echo "n"."Socket Sender to ip# ".$host. " using port# ".$port ."n";
	

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
$result = socket_connect($socket, $host, $port) or die("Could not connect to servern");  
socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");
socket_close($socket);

?>

Què hi ha al teu hex2bytearray() funció? No puc trobar res que suggereixi que sigui una part estàndard de PHP, i em vaig preguntar per què podríeu convertir cada byte individual en una matriu de bytes.

No pots fer servir sprintf() afegir els personatges al final? Alguna cosa com

$var_str .= sprintf("%c%c%c%c", 255, 254, 253, 252);

No estic segur que funcioni amb caràcters no imprimibles.

El vostre proveïdor hauria de tenir instruccions sobre com interactuar amb el seu servei, si no ho fan, haureu de fer preguntes clarificadores. Des de l’aspecte de la primera publicació, això és per a un sistema de transport en curs, és a dir, missatge, missatge, missatge, etc.

Per exemple, la primera publicació explica una seqüència/codi de “missatge lliurat”.
A la publicació anterior, afegeix-ho directament al final del missatge.

Heu provat d’enviar el codi lliurat del missatge, després d’enviar el missatge real, en una nova ordre socket_write? També confirmaria si el missatge s’ha de codificar abans d’enviar-lo.

Tampoc estic segur de si el format del codi del missatge lliurat és correcte.

El següent pas hauria de ser el que s’ha esmentat anteriorment, obtenir les instruccions del proveïdor o fer preguntes per aclarir com s’ha de lliurar cada part.

ho entenc, arregles el meu codi… moltes gràcies



1 M’agrada

Fonamentalment, s’ha d’acordar la interpretació del material intercanviat entre les dues parts de la connexió. És un protocol per fer-ho.

Els dos primers bytes es podrien interpretar com un nombre enter, tal com s’indica. Assegureu-vos que ambdues parts poden posar-se d’acord sobre quin byte és alt i quin és baix (l’endianitat del nombre). Aquest mètode també us impedeix enviar cadenes contínues de més de 65 k bytes. Probablement no serà cap problema, però és una cosa que cal tenir en compte.

Leave a Comment

Your email address will not be published. Required fields are marked *