Gerçekten birileri bu ışık döken umuyoruz. Ben PHP ve Flex kullanarak gerçekten çok basit bir sohbet sunucusu / istemci inşa ediyorum. Ben birçok dersler takip ve Windows istemcisi kullanıyorsanız ben herhangi bir mesaj gönderemiyorum dışında, PHP bir çalışan sunucu ve Flex çalışan bir istemci sahibiz.
Benim Mac bir mesaj göndermek zaman sunucuya geçer ve bağlı olabilir herhangi bir Windows istemcisi dahil olmak üzere tüm müşterilerine, gönderilen alır. Mesajı gerçekten de Windows istemcileri üzerinde gösterecektir, ben bu işe yaramazsa o Windows gönderirken deneyin sadece bulunuyor.
Ben doğru bağlantı noktasını dinleyen bir PHP komut dosyası tarafından sunulan bir crossdomain.xml dosyayı ekleyerek denedim, ancak müşterilerin hiçbiri bunun için sormak gibi görünüyor, ve istemci Mac üzerinde çalışıyor eğer Windows üzerinde çalışması gerekir üstlendi. Arada ben (ki bir fark yapar bilmiyorum) bir AIR dosyası olarak projeyi ihraç ediyorum.
Ben bir yerde aptal oluyorum ya da Windows istemcileri için bazı özel tedbirler alır gerek olup olmadığını ben merak ediyorum bu konu ile ilgili bir şey bulamıyorum?
(Ben Yığın taşması gönderilen asla mümkünse yüzden, kod biçimlendirme eksikliği için özür dilerim kimse bunu düzeltmek için nasıl açıklayabilir?) Aşağıda benim istemci kodu yapıştırılır var.
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
public var socket:Socket;
// Run on windowComplete
protected function init():void {
btnConnect.addEventListener(MouseEvent.CLICK, onBtnConnectClick);
}
// Run on closing
protected function deinit():void {
if ( (socket != null) && (socket.connected) ) {
socket.close();
}
}
// Called when the "Connect" button is clicked
protected function onBtnConnectClick(e:MouseEvent):void {
if (txtServer.text != '') {
socket = new Socket();
socket.addEventListener(Event.CONNECT, onSocketConnect);
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketDataProgress);
socket.addEventListener(IOErrorEvent.IO_ERROR, onSocketIOError);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSocketSecurityError);
socket.connect(txtServer.text, new uint(txtPort.text));
btnSend.addEventListener(MouseEvent.CLICK, onBtnSendClick);
}
}
// Called when the "Send" button is clicked
protected function onBtnSendClick(e:MouseEvent):void {
if (txtChatMessage.text != '') {
txtChatWindow.text += 'You: '+ txtChatMessage.text +"\n";
socket.writeUTFBytes(txtUsername.text +': '+ txtChatMessage.text);
}
txtChatMessage.text = '';
}
// Called when the socket is connected
protected function onSocketConnect(e:Event):void {
txtChatWindow.text += 'Connected\n\n';
btnConnect.label = "Disconnect";
btnConnect.removeEventListener(MouseEvent.CLICK, onBtnConnectClick);
btnConnect.addEventListener(MouseEvent.CLICK, onSocketDisconnect);
}
// Called when the socket recieves data
protected function onSocketDataProgress(e:ProgressEvent):void {
var data:String = socket.readUTFBytes(socket.bytesAvailable);
txtChatWindow.text += data +"\n";
}
// Called when there is an IO Error on the socket
protected function onSocketIOError(e:IOErrorEvent):void {
txtChatWindow.text += e.text;
}
// Called when there is a security error on the socket
protected function onSocketSecurityError(e:SecurityErrorEvent):void {
txtChatWindow.text += e.text;
}
// Called when the "Disconnect" button is clicked
protected function onSocketDisconnect(e:MouseEvent):void {
if ( (socket != null) && (socket.connected) ) {
socket.close();
}
btnConnect.label = "Connect";
btnConnect.addEventListener(MouseEvent.CLICK, onBtnConnectClick);
}