flex端代码 Array = []; while(oSocket.bytesAvailable){ aMsg.push(oSocket.readMultiByte(oSocket.bytesAvail able,'utf-8')); } var sMsg:String = aMsg.join('').replace(/\r/g,''); if(sMsg.indexOf(':::')!=-1){ var Arr:Array; var Arr1:String ; var Arr2:Array ; var play:Array ; var i:int; Arr = sMsg.split(':::'); fooShowMsg(Arr[0]); Arr1 = Arr[1] Arr2 = Arr1.split('***'); for(i=0;iArray; var arr2:Array; arr = sMsg.split(':'); arr2 = arr[1].split('---'); if(arr2[0]==nickName){ //自己不用处理 }else{ //移动 var thePlayer:Object = game.getChildByName(arr2[0]); moveTo(thePlayer,arr2[1],arr2[2]) } }else{ fooShowMsg(sMsg); } } //显示聊天信息 public function fooShowMsg(sMsg:String):void{ var sTemp:String = msg.text; msg.text = sTemp+sMsg; //聊天框自动滚动到最下面 msg.verticalScrollPosition = msg.maxVerticalScrollPosition; } //发送信息到服务端 public function fooCommand(sMsg:String):void{ var bMsg:ByteArray = new ByteArray(); if(sMsg.length>0){ bMsg.writeUTFBytes(sMsg+''); bMsg.writeUTFBytes('\r\n'); oSocket.writeBytes(bMsg); oSocket.flush(); } } //发送聊天 public function sendChat(msg:String):void{ var tempMsg:String = '['+nickName+']: '+msg; fooCommand(tempMsg); input.text=''; Alert.show("aaa") } //登陆连接游戏 public function fooConnect():void{ var sIP:String = ip_text.text; var sPort:Number = Number(port_text.text); var sUser:String = user_text.text; var sCode:String = code_text.text; var sPlayer:String = user_name.text; if(!(sIP&&sPort)){ Alert.show('服务器地址和端口号必填!','Warning:'); }else{ text_c.text = 'Connecting......'; text_c.setVisible(true); //btn_connect.enabled = false; oSocket.connect(sIP,sPort); if(sUser) fooCommand('user '+sUser); if(sCode) fooCommand('pass '+sCode); if(sPlayer) fooCommand('player:'+sPlayer); nickName = user_name.text; } } //断开链接,退出游戏 public function fooDisConnect():void{ oSocket.close(); game.setVisible(false); login.setVisible(true); } //玩家移动自己 private function movePlayer():void { var x:int = mouseX-64; var y:int = mouseY-90; if(y255 && x twisted端代码 # -*- coding: UTF-8 -*- #Twisted MMORPG from twisted.internet.protocol import Factory from twisted.protocols.basic import LineOnlyReceiver from twisted.internet import reactor import random import string class Game(LineOnlyReceiver): def lineReceived(self, data): self.factory.sendAll("%s" % (data)) def getId(self): return str(self.transport.getPeer()) def connectionMade(self): print "New User Login:", self.getId() self.transport.write("\0") self.transport.write("欢迎来到MMO世界!\n") self.factory.addClient(self) def connectionLost(self, reason): self.factory.delClient(self) class GameFactory(Factory): protocol = Game def __init__(self): self.clients = [] self.player = [] self.msg = '' self.x = range(100, 700) self.y = range(100, 500) def getPlayerId(self): return len(self.player) def addClient(self, newclient): self.clients.append(newclient) def delClient(self, client): self.clients.remove(client) def sendAll(self, data): print data if data.find('') != -1: self.clients[0].transport.write('\0') else: arr = data.split(':') prefix = arr[0] content = arr[1] if prefix.find('player') != -1: newPlayer = [content, str(random.randrange(200, 600)), str(random.randrange(150, 350)), str(random.randrange(1, 5))] self.player.append(newPlayer) self.msg = ' 玩家 ' + content + ' 进入游戏!' #广播所有玩家的位置 temp = [] playerData = ':::' for pos in self.player: temp.append(string.join(pos, '---')) playerData = playerData + string.join(temp, '***') self.clients[0].transport.write('[系统]: ' + self.msg + '\n') self.clients[0].transport.write(playerData) elif prefix.find('pos') != -1: playerName, x, y = content.split('---') i = 0 for p in self.player: if p[i][0] == playerName: p[i][1] = x p[i][2] = y for proto in self.clients: proto.transport.write(data) else: self.msg = data for proto in self.clients: proto.transport.write(self.msg + '\n') reactor.listenTCP(8555, GameFactory()) reactor.run() 以上代码通过服务器端直接将 crossdomain的内容返回到flex中。 上一篇文章已经介绍过,flex会先请求843这个端口下是否会返回crossdomain的信息因此可以通过部署端口为843的服务在解决flex跨域(8043 安全沙箱的问题)的问题
843端口的服务代码为: from twisted.internet import reactor from twisted.internet.protocol import Factory, Protocol class PolicySocketProtocol(Protocol): def dataReceived(self, data): self.transport.write("\0") class PolicyFactory(Factory): def __init__(self): self.protocol = PolicySocketProtocol; if __name__ == '__main__': reactor.listenTCP(843, PolicyFactory(), interface="127.0.0.1") reactor.run()
发表评论
-
字符串输入函数gets( ) fgets( ) scanf( )
2012-07-06 09:52 827C库提供了三个读取字符串的函数:gets( ) fget ... -
php-study
2012-07-06 09:46 698Let start! 1 静态变量拥有全局变量一样的生存周 ... -
在VC中使用代码组件的三种方法
2012-07-03 13:44 622我是北方的一匹狼,孤军南下…… 喜欢这边的天气,冬天也一样 ... -
Flex权威指南3学习笔记之一------界面知识(三)
2012-07-02 13:09 535使用视图状态 1.新建一个显示购物车的视图状态 ... -
Flex缓存客户端
2012-07-02 13:09 583flex或者flash客户端 ... -
Building a custom Flex preloader
2012-07-02 13:09 833http://www.adobe.com/devnet/f ... -
Felx中的声明addChild方法的类的层级关系
2012-07-02 13:09 541这里需要提到的是,不能在flex里直接用addChild( ... -
Flex4的可视化显示对象
2012-07-02 13:08 411flex3中用addChild(child:Display ... -
【转】Flex和外部应用程序进行通信
2012-07-01 10:39 404Flash To EXE Flex端 Flex创 ... -
Flex TXT文件导入
2012-07-01 10:39 326在上一篇文章中,我们做了一个文件上传、导入组件,其实就是一 ... -
小白学Flex之数据类型
2012-07-01 10:39 420这是第一次写关于flex的文章,也是John开始学习Fle ... -
Flex 捆绑式验证处理
2012-07-01 10:39 532Flex提供的默认的验证器,比如:日期验证器、货币验证器等 ... -
PHP作为Flex程序的数据源
2012-06-30 17:03 334PHP作为Flex程序的数据源 2010年10月20日 ... -
myeclipse6.5+flex 3 + tomcat6.0 + ds-console.war环境搭建
2012-06-30 17:03 902myeclipse6.5+flex 3 + tomcat6.0 ... -
使用blazeds实现flex和java交互
2012-06-30 17:03 493使用blazeds实现flex和java交互 2010年07 ... -
flex笔记--安装与项目建立
2012-06-30 17:03 542flex笔记--安装与项目建立 2011年01月04日 ...
相关推荐
主要介绍了python如何通过twisted搭建socket服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
twisted网络通信模型
这篇文章主要介绍了python如何通过twisted搭建socket服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务端 # -*- coding: utf-8 -*- # @Time : 2018/9/19...
第二部分:异步编程初探与reactor模式 第三部分:初步认识Twisted 第四部分:由Twisted支持的诗歌客户端 第一个twisted支持的诗歌服务器 第一滴心血 第五部分:由Twisted支持的诗歌客户端 第一滴心血 第六...
Twisted与异步编程入门,最好的入门资源。
Twisted Network Programming Essentials,一本介绍socket异步编程框架twisted
我学习和使用twisted已经好几年了,通过这几年的学习和工作我得出的结论就是:学习twisted困难的地方就是对异步编程的理解而不是怎样去用twisted 的函数去写代码. twisted 的代码写的都很简洁和清晰,而且有很好的注释...
最新twisted是python面向实时通信的应用框架,支持python3,希望做硬件开发、控制的有关人员喜欢
autobahn-python, 在 python 中为 Twisted 和 asyncio,web socket和, Autobahn|Pythonweb socket & WAMP用于 Twisted 和asyncio上的python 。 快速链接: 源代码 - 文档- web socket示例- web WebSocke
Twisted Info Twisted入门教程源码
twisted资料twisted资料twisted资料
Python Twisted模块 10.2.0Python Twisted模块 10.2.0Python Twisted模块 10.2.0Python Twisted模块 10.2.0Python Twisted模块 10.2.0Python Twisted模块 10.2.0
Twisted与异步编程入门(汇总版)
The Twisted Documentation 电子版 pdf twisted 框架 网络编程
2020,好不容易找来的资源,一共22章节,169页,很好很新的Twisted与异步编程教程。希望对大家有帮助,。
Twisted Python事件驱动网络框架
Twisted Network Programming Essentials 2nd Edition BOOK DESCRIPTION Get started with Twisted, the event-driven networking framework written in Python. With this introductory guide, you’ll learn the...
网络编程中我们越来越感觉twisted的强大,本教材是一本很好的twisted入门级教材