Actionscript 3 :: Flash / AIR Socket Communication WriteUTFBytes Only Works Once
May 12, 2011
I have a socket server listening on 2 ports, 1 port for the socket server and 1 port for the policy server. My code is below, in this scenario, data is sent and received perfectly fine. however, for example if I add a button with a simple:
socket.writeUTFBytes("Message");
socket.flush();
after the initial connection, it doesn't seem to send any data to my server (I have my server printing all data transmissions to the console for checking) Initial connections work fine, as seen below:
I'm creating a client-server game. My client is a flex based game, and my server is erlang server. At the beginning, when I test directly my flex client in flash player, I can establish a connection easily to my erlang server through socket connection. And both can exchange data with no problem. The problem rise when I deploy my flex app at Apache http server, and running it using a browser by calling [URL] my flex socket sends message requesting for a crossdomain policy to my erlang server. So I create an xml message that represent a crossdomain policy, and send it back to my flex app as a response for that request.
Yet still I can't establish any permanent socket connection between my flex client and my erlang server. I know this because I add listener on my flex socket that will modify its internal state to CONNECTED, if a connection between client-server has established.
I made swf file that sends id to php, than php collects info from mysql by this id, and returns result, than flash does his work with that result. The problem is here, I will try to explain it as clearly as I can: everything works fine when I do that on the computer that has all the source files and of course xampp running.
I have a .fla file, that works with Socket class. There is a server(written in Delphi XE, but it does not matter). I connect to it from my .fla. When i execute my .fla from within Flash Professional CS5 everything works fine. But when i tried to execute resulting .swf from Explorer(Win 7, Flash Player 10) i got an error:
SecurityError: Error #2010: Local-with-filesystem SWF files are not permitted to use sockets. at flash.net::Socket/internalConnect() at flash.net::Socket/connect() at payterminal::TLogger() at
[Code].....
After all this, my .swf is still open in Flash Player with no errors, but the socket connection is not happening. I tried different crossdomain-files, but all my attempts led me to same result.
when using Socket class to make connection with server, how actionscript transform data to server with different language implementation? The server may implement in .NET, ruby, or java, the following is the code example:
[Code]...
when I use java implements the server side, why and how actionscript "know" the way to communicate with java(what if using .NET implements the serverside), does it mean actionscript "clever enough to know the server side language?". what if write customer object to socket(and how), and server responds to actionscript. Could anyone explain the mechanism or recommend some material about these topic?
I use C# to read a string (BinaryReader.ReadString()) from the socket stream. But the problem is that flex doesn't writes the string in suitable format, so C# will be able to read that. C# reads a 7 bit encoded integer which indicates the length of the string, and just then reads the string. But flex doesn't writes a string in this format (I use socket.WriteUTF(), and even socket.WriteUTFBytes() didn't work), so C# can't read the string. Here's a little information of how C# reads/writes a string from a socket stream: [URL]
I have a Flex AIR app, and i am trying to get data from a Java Server. Can some one tell me if this approach will work?
Start a ServerSocket in Java and wait for a connection. Use Flex to connect to the same port. Write some data to the socket from Java Server. Read the data at the Flex end and process it.
I think i am able to get this working, but the data that i read back at Flex end seems to be empty.
My current problem is socket.bytesAvailable becoming 0 and therefore obj is coming up as "". So how to read data sent from the server using a Socket in Flex?
I have some software developed where I have setup good communcation between some VB software and flash software. Communication is done locally via socket connection. I was hoping I could do the same except with two swfs. Who acts as the host? do I need a host?
I wrote a Flash AS 3.0 Preview .fla & .as files that establishes a connection with a C++ server app via an XML Socket. Everything works great when I start the .swf file within Flash 9 Public Alpha by pressing [CTRL]+[ENTER]. But if I close the exported .swf file, and immediately open the file with the standalone Windows Flash 9 Player (I tried it with the player that comes with the Alpha preview and the brand new Player released on Oct 4 on Adobe Labs), no connection to the server is established.
I made sure the playback security was set to network only on the publish settings menu. I have another program that connects to the same server without a problem, so I don't think it's a cross-domain policy file problem.
I am trying to create a file format for myself, so i was forming the header for my file. To write a known length string into a ByteArray, which method should i use, writeUTF() or writeUTFBytes(). From the Flex 3 language ref, it tells me that writeUTF() prepends the length of the string and throws a RangeError whereas writeUTFBytes() does not.
When I send number (int)52 s.Send(BitConverter.GetBytes((int)872415232));, flash show me trace(socket.readInt()); 872415232 If i send 872415232, flash show 52.Why? And how it fix?
Steve Jobs just posted this article on why Apple rejects Flash... [URL] I agree that javascript and css can be used to replicate some of Flash's animation, though Flash does all sorts of scaling and tweening that is incredibly powerful, and I'm not sure that there's anything comparable in javascript, if there is, I certainly haven't seen it.
However, my question is about the socket. Flash has an incredibly powerful openSocket class that allows you to connect to a server and have the server and the client talk back and forth to one another. As far as I know there is no equivalent class in Javascript. Am I mistaken? Is there some secret mystery Ajax class that replicates the openSocket? If not, then that feature alone makes Flash an invaluable tool.
I recently made a mp3 player in Flash. I have an aspx page that has the mp3 player in it as well as a .net button which is disabled on page load. The .net page tells the audio player waht file to play and the player plays. What is supposed to happen next is when the audio player reaches the end of the file the button on the aspx page is supposed to become enabled. I am not sure how to do this [have Flash tell the aspx page that it is done playing].
I am not any kind of network programming pro, but it happened that I have faced necessity to develop socket-server on php (no way for using Java) for flash multiplayer browser-game (standard features like locations, team battles, etc).
The main problem is that TCP is point-to-point protocol and it completely occupies given port.Of course it is possible to create some kind of queue, which will manage connections to the socket, but this solution doesn't seems to be the fittest one.
It seems to me that using interval of "fair" ports (from 2000 to 2200, for example) is more fitting solution, because one request may take a lot of time to execute and players won't be happy to wait in queue.
But how can I implement this "port inteval" strategy?The solutions that I see are:
launcing php-script per every port (he-he, 2 hundreds of launched scripts!);somehow forking the initial process to new processes (2 hundreds of processed? Not nice too), one for every port;additional while-loop, which listens all the ports (looks very bad);using threading or something like that (the problem is that php is single-threaded, as far as I know; pcntl?).But somehow I don't like any of them, or at least don't know how to implement them in the best possible way.
What is the best existing strategy to handle multiple requests from multiple users per time unit without delays, and how to implement this strategy in php? We have our own Debian-server, so it is possible to use any required php extensions.
For example, if we are trying to develop chat application, we need some sort of fixed (I mean persistent) connections for each user. For example, we have 80 users in chat, and then one of them posted a message, which server tries to handle and send to all other connected users, also putting an entry to the history file or something like that.
In this situation polling server for new messages every 10 seconds from each of 80 users is craziness, so the need in persistent connection gets obvious.But I don't know what is the best way to implement something like this, considering that not all requests are handled instanlty.
I'm trying to implement a basic WebView containing a SWF file inside. The SWF file plays and apparently works fine. However I'd like to know if there's some way to retrieve an ActionScript variable from my Cocoa application.
I'm communicating from a flash application using a command like the following: ExternalInterface.call("hello", "world") This is handled on the C# end by something like:
[Code]...
The axFlash_FlashCal is called fine, as long as there is a textbox on screen that's set to use TLF text. (any textbox will do, no specific ID). Without the textbox the even will not fire. (Even though ExternalInterface.Avaliable is set to true) I've tried using CS4 and CS5 to publish, using both Flash 10 and 9 as output.
I am having in issue with IE passing a string back into an swf using the EternalInterface class in Flash CS4.I have an swf with the following code: var externalString:String = ExternalInterface.call("IncomingJS")which is inside an event listener attached to an Event.ENTERFRAME and an if statement waiting for ExternalInterface.available. [code]I am able to successfully get the externalString variable and procceed with the rest of the AS3 script in Firefox, Safari and Chrome, but not in IE.If I add in an alert (stringFromHTML) before the return statement in the Javascript, I get the value of the stringFromHTML spammed, which looks like Flash is firing the function at the right rate[code]Unfortunately, the HTML code is actually working within a 3rd party HTML generator, and one of it's limitations is that I can only have a single line (with unlimited length) of html at a time.Are the other options (swfObject etc) able to run either with no line breaks in the code, or would I be asking for trouble with Javascript and the SWF to, instead of embedding the SWF directly, use something like an iFrame and refer to a 'proper' flash delpoyment html file?
I'm doing some experiments with Adobe Cirrus. I've managed to connect 2 clients to each other. But what I want now is the following: I want client A to publish and clients B and C to play A's stream. I've tried to do this. A starts publishing, B and C create receiving NetStream based on A's nearID. Unfortunately only latest connected to A client can play A's stream.
I am trying to make connection between two datagrid in two separate windows.
Until now, I am able to create a datagrid in one FLEX browser window but got stuck furthur.
On some click event in one of 1st datagrid row-column field value, (i.e itemRenderer in form of button), I want to open a new window (using some LocalConnection or ExternalInterface.call) to open another window with the part of the original data grid.
Which method should I use - LocalConnection or ExternalInterface.call ?
How do I do this? Inside the parent swf myVar value is set by query string value loaded in by swfobject var myVar = _level0.part; // i have the value 123 here ..all good so far
[Code]...
Always childLog.text is undefined :( - so how to access the value of myvar from the child?
I am trying to play flash video on one computer and get a flash program (on another computer) to know what content is being played, so it can respond appropriately with related content.Has anyone got ideas on the best way to achieve this?I have tried using socket connections through a Java server with a policy file request, but after receiving delivery of the policy file as text over the socket, Flash won't reconnect to talk to the server. I can't figure out how to enable policy file logging either.
I am having a huge problem and need a fix or at least to be pointed in the right direction quickly. I am working on a massive flash project for which I have quite a large deadline tomorrow. I have 8 movie clips on my stage, and each of these clips has a number of entities which need to be loaded and changed by data from a database. These entities are all dynamic text boxes bar one thing: the name of the clip, the id of the clip, its internal colour, a question, and an answer to this question. I have already created a table using phpMyAdmin that is laid out like this:
name - number - colour - question - comment There are currently 2 rows in this table but there will eventually be 8 minimum as I am still largely in test mode. I found a tutorial for as2 (bare with me ), which shows me how to take a single source of data from a database and then parsing the xml generated inside of actionscript and add each item to a list. However, taking into account that I am a complete newbie when it comes to xml and php and mysql, I am very confused as to how I could access all these details using php, using the below php and as code as a template:
So flash invokes javascript functions using fscommand. Javascript can invoke flash commands using the ExternalInterface class . Is there any other way that javascript can invoke flash commands???