2009-09-08 7 views
2

Serait-il possible de copier ce programme C# en PHP?PHP Networking Sockets

 var chatsrv = new IPEndPoint(IPAddress.Parse(_charUrl), _chatPort); 
     _chatsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
     _chatsocket.Connect(chatsrv); 
     var ns = new NetworkStream(_chatsocket); 
     _nw = new BinaryWriter(new BufferedStream(ns)); 
     var nr = new BinaryReader(ns); 

     _nw.Write((byte)(0xff)); 
     _nw.Write(acc.AccountId); 
     _nw.WriteUtf8String(acc.AuthCookie); 
     _nw.Write((UInt32)2); 
     _nw.Flush(); 

     var response = nr.ReadBytes(nr.ReadInt32()); 

Répondre

1

Peut-être ceci:


$chatsocket = fsockopen('IP address', $chatPort); 
if ($chatsocket == FALSE) die('connection failed'); 

fwrite($chatsocket, "\xff"); 
fwrite($chatsocket, $accountId); 
fwrite($chatsocket, utf8_encode($authCookie)); 
// memdump of 2 as little-endian 32-bits unsigned int (intel representation) 
fwrite($chatsocket, "\x02\x00\x00\x00"); 

$bytes = fread($chatsocket, 4); 

// convert little-endiang 32-bits unsigned int into PHP number 
$bytes = ord($bytes[0]) | (ord($bytes[1]) << 8) | (ord($bytes[2] << 16) | (ord($bytes[3] << 24); 


$response = ''; 
// wait for the entire block 
while (!feof($chatsocket) && (strlen($response) < $bytes)) 
$response .= fread($chatsocket, $bytes - strlen($response)); 

+0

Est-ce une solution si quelqu'un veut communiquer de PHP à une application qui utilise les messages préfixés pour spécifier la taille de ses messages? Désolé pour cette question de base mais je ne suis pas (encore) un développeur professionnel ... – Mike