Flash Socket编程(1)
http://blog.csdn.net/hero82748274/archive/2009/02/03/3860895.aspx
现在来写一个flash 客户端,这里要解决的问题包括,
如何连接服务器,
如何监听服务器的内容,
如何发送信息服务器,
现在发一段简单的代码,这个代码很简单,功能不完整,为的是能够清晰一点让我们学习flash socket编程。
package { import flash.net.Socket; import flash.events.*; import flash.display.Sprite; import flash.errors.*; import flash.display.SimpleButton; public class Client extends Sprite { private var mysocket:Socket; private var host:String="localhost"; private var port:int=8001; public function Client() { btn.addEventListener(MouseEvent.CLICK,SendData); mysocket=new Socket(); mysocket.addEventListener(Event.CONNECT,OnConnect); mysocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); mysocket.addEventListener(ProgressEvent.SOCKET_DATA , receivedata); //mysocket.addEventListener(SecurityError mysocket.connect(host,port); } private function OnConnect(e:Event):void { trace("连接成功"); mysocket.writeUTFBytes("Test successful2/n"); mysocket.flush();//发送数据 } private function ioErrorHandler(e:IOErrorEvent):void { trace("连接失败"); } private function receivedata(e:ProgressEvent):void { trace("收到的字节数"+mysocket.bytesAvailable); var msg:String; while (mysocket.bytesAvailable) { msg+=mysocket.readMultiByte(mysocket.bytesAvailable,"utf8"); trace(msg); } } private function SendData(e:MouseEvent):void { trace("发送"); mysocket.writeUTFBytes("i am flash/n"); mysocket.flush();//发送数据 } }}
我们首先解决第一个问题:(其实在cookbook那里已经有说的)这里简单演示一下
一.连接服务器:
mysocket=new Socket();
mysocket.addEventListener(Event.CONNECT,OnConnect);
mysocket.connect(host,port);
host :是连接的ip端,这里连接本地所以使用localhost 或者127.0.0.1 就ok
port:端口号只有大于1024的时候基本上可以顺利,小于1024还要进行一些配置
监听连接是否成功:
private function OnConnect(e:Event):void
{
trace("连接成功");
mysocket.writeUTFBytes("Test successful2/n");
mysocket.flush();//发送数据
}
连接成功后,我们可以发送一个简单信息给服务器:
mysocket.writeUTFBytes("Test successful2/n");
mysocket.flush();//发送数据
注意,有个/n没有这个回车符,看看会有一些什么发生呢。
使用writeUTFBytes 是不可能立刻发送数据给服务器的,还要使用flush方法才能发送给服务器。
二.处理错误:
mysocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
private function ioErrorHandler(e:IOErrorEvent):void
{
trace("连接失败");
}
三.接收服务器返回的信息
mysocket.addEventListener(ProgressEvent.SOCKET_DATA , receivedata);
private function receivedata(e:ProgressEvent):void
{
trace("收到的字节数"+mysocket.bytesAvailable);
var msg:String;
while (mysocket.bytesAvailable)
{
msg+=mysocket.readMultiByte(mysocket.bytesAvailable,"utf8");
trace(msg);
}
}
这样我们可以接收到服务器发送来的信息,但是存在一个问题,接收数据会存在一个回车符合的问题,需要我们去解决。这里暂时不多说
看上面的
参考:
{
trace("发送");
mysocket.writeUTFBytes("i am flash/n");
mysocket.flush();//发送数据
}
将一个 UTF-8 字符串写入套接字。
|
连接成功....
获取里面的内容......
内容:Test successful2
内容:i am flash
内容:i am flash
内容:i am flash
内容:i am flash
内容:i am flash
收到的字节数16
null你好我是服务器
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow