내 문제는 다음이다. 이 코드는 작동합니다. 나는 FX와 Main.mxml 파일이 그 외에도 : 내가 원하는 : 스크립트 코드를연결 ActionScript 클래스 (소켓)
그래서 내가 원하는 (내 원래 파일에서 내가 간단하게 여기이 경우, 연결된 거대한 GUI가있다) Socket으로부터 정보를받을 때 메소드를 호출한다. 그래서 ActionScript 클래스에서 mxml 파일에있는 메서드를 호출하고 싶습니다. 대신 처리 할 수있는 mxml 파일에 이벤트를 보내려고합니다. 나는 import/stuff에 대해 많은 것을 읽었지만 아무런 도움이되지 못했습니다. 액션 스크립트 파일 SocketExample.as : 여기
// http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html
package {
import flash.display.Sprite;
public class SocketExample extends Sprite {
private var socket:CustomSocket;
public function SocketExample() {
socket = new CustomSocket("localhost", 80);
}
}
}
import flash.errors.*;
import flash.events.*;
import flash.net.Socket;
class CustomSocket extends Socket {
private var response:String;
public function CustomSocket(host:String = null, port:uint = 0) {
super();
configureListeners();
if (host && port) {
super.connect(host, port);
}
}
private function configureListeners():void {
addEventListener(Event.CLOSE, closeHandler);
addEventListener(Event.CONNECT, connectHandler);
addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}
private function writeln(str:String):void {
str += "\n";
try {
writeUTFBytes(str);
}
catch(e:IOError) {
trace(e);
}
}
private function sendRequest():void {
trace("sendRequest");
response = "";
writeln("GET /");
flush();
}
private function readResponse():void {
var str:String = readUTFBytes(bytesAvailable);
response += str;
trace(response);
//
// Here I want to call the method
//
}
private function closeHandler(event:Event):void {
trace("closeHandler: " + event);
trace(response.toString());
}
private function connectHandler(event:Event):void {
trace("connectHandler: " + event);
sendRequest();
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function socketDataHandler(event:ProgressEvent):void {
trace("socketDataHandler: " + event);
readResponse();
}
}
이 HelloSocket.mxml라는 Main.mxml 파일입니다
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
public function HelloWorld():void{
HelloLabel.text = "Hello World";
}
]]>
</fx:Script>
<s:Label id="HelloLabel" x="150" y="180" text="Hello" fontSize="20" fontWeight="bold"/>
</s:WindowedApplication>
이렇게하여 HelloWorld() 함수가있다 그래서 여기
내 코드입니다 여기서 전화하고 싶습니다. 중요한 점은 GUI와 SocketClient (클래스)가 동시에 실행된다는 것입니다. 이것은 전체 예제 코드입니다.
나에게 모든 것을 알려주세요 나는 수입부터 시작하여,이 예제 작업을해야하고 이벤트 처리 또는 방법은 직접 코드를 변경하고 설명하는 것입니다
최저
를 호출에 포함되어 있습니다.import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main (String args[]) throws IOException {
ServerSocket mySocketServer = new ServerSocket(80);
System.out.print("Waiting for FlashClient ...\n");
Socket mySocket = mySocketServer.accept();
System.out.print("FlashClient connected.\n\n");
mySocketServer.close();
InputStream in = mySocket.getInputStream();
OutputStream out = mySocket.getOutputStream();
byte buffer[] = new byte[1];
int i = 5;
do
{
// i = in.read(buffer, 0, 1);
if (i>-1) out.write("Hello World".getBytes("UTF-8"));
try {
Thread.sleep (300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while(i>-1);
System.out.print("Lost connection to FlashClient.\n\n");
in.close();
out.close();
mySocket.close();
}
}
메시지가 표시되지 않을지 확신 할 수 없습니다. readMessage를 깨고 여러 조각으로 나눕니다. 이러한 이유로 내부적으로 \ 0을 기다리는 XMLSocket을 사용하고 메시지의 모든 미니 조각을 함께 연결하는 것이 좋습니다. 클라이언트가 메시지를 알 수 있도록 서버에서 \ 0을 추가해야합니다. 또한 서버가 이미 \ 0을 추가하는지 확인하십시오. – Discipol
감사합니다. 이것을 확인하겠습니다. – user2359462