flex端代码 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()
发表评论
-
iphone 字符串 nsstring用法
2012-07-06 09:51 6841.4.1 字符串 可能最常使用的类就是NSStr ... -
正则表达式测试工具、网页版
2012-07-06 09:45 730有时候为了测试正则表达式、临时自己写了这么一个、我对于JS ... -
Php正则表达式
2012-07-06 09:37 6021、 perl兼容正则表达式: 模式修 ... -
如何修改酷我软件中的皮肤图片为自己的图片?
2012-07-06 09:30 625如何修改酷我中的 ... -
window.opener 的用法
2012-07-05 20:45 622window.open()支持环境: JavaScript ... -
Swing组件集合的事件处理(四)
2012-07-03 13:43 623如果我们正在创建我们自己的组件并且希望这些组件触发事件,我 ... -
Flex 与java 通信,通过BlazeDS
2012-07-02 10:25 5441. Server代码 package com.east ... -
FLEX与javascript交互
2012-07-02 10:25 571用Flex来调用同一页面中的javascript函数。调用 ... -
twaver-flex效率与性能测试
2012-07-02 10:25 609测试环境: 测试一 节点:创建图片节点; 连 ... -
Flex xml的实用操作
2012-07-02 10:25 598XML类包含用于处理XML对象的工作方法和属性。 XML类 ... -
OpenScales入门教程:第二节 : 创建第一张地图
2012-07-01 00:03 621你需要把第一 ... -
flex与C# Socket通信
2012-07-01 00:03 865Socket 通信没什么好说,一个服务端,多个客户端,很容 ... -
Flex Socket编程
2012-07-01 00:03 623比较懒,比较少上csdn的,如果发现留言给我没有回复,望见 ...
相关推荐
### Python 如何通过 Twisted 搭建 Socket 服务 #### 一、Twisted 框架简介 Twisted 是一个用 Python 编写的事件驱动网络引擎,它为开发多种类型的互联网应用程序提供了一种灵活的方法。Twisted 提供了丰富的 API ...
总结来说,Twisted 网络通信模型通过事件驱动和异步编程方式,使得开发者可以高效地处理并发连接,实现复杂的网络应用,如服务器、客户端、聊天应用、游戏服务器等。它的设计使得代码结构清晰,易于扩展和维护,是 ...
【Twisted与异步编程入门】是一篇关于Python中Twisted框架和异步编程的教程。Twisted是一个强大的网络应用框架,特别适用于处理复杂的异步编程需求。文章首先强调了理解异步编程模型的重要性,指出只有深入理解模型...
标题提到"twisted适合python3.8版本",这意味着Twisted-20.3.0这个特定的发行版本是与Python 3.8兼容的,确保了用户可以在Python 3.8环境下顺利运行Twisted的相关项目。 描述中提到的"twisted-20.3.0适合python-3.8...
通过这个例子,我们可以了解到Twisted如何处理网络连接、数据交换以及异步通信,这在构建复杂的网络应用时是非常有用的。在实际项目中,开发者可以根据需求扩展这些基础组件,实现更高级的功能。
Twisted系列教程中文简介 Twisted是一个基于Python的异步网络编程库,提供了一个灵活的架构来处理异步I/O操作。该教程将从基础开始,逐步深入Twisted的世界,帮助读者了解异步编程的思想和Twisted的使用方法。 ...
9. **进程与线程管理**:Twisted还支持跨进程和线程的通信,可能有相关的示例说明如何利用这些功能。 通过深入研究"twisted-intro-master"中的示例,开发者可以逐步理解并熟练运用Twisted框架,从而开发出高效、...
通过这部分内容,读者可以对Twisted框架有一个全面的认识,并且能够体会到Twisted在与其它编程语言和模式结合时的独特优势。 整体而言,这系列教程是对Twisted框架的全面介绍,涵盖了从基础到高级的各个层面的知识...
1. **高效与灵活性**:Twisted 是一个异步事件驱动的网络引擎,适用于多种操作系统(如 Linux、Windows、Unix 和 Mac)。它能有效处理高并发场景下的网络通信任务。 2. **支持多种协议**:Twisted 支持多种网络协议...
这时可以尝试手动下载并安装Twisted,首先解压提供的`twisted.rar`和`Twisted-17.9.0.dist-info.rar`文件,然后通过pip指定本地路径进行安装: ``` pip install path/to/twisted.whl pip install path/to/Twisted...
- **惰性不是迟缓: Twisted和Haskell**:通过将Twisted与Haskell进行对比,探讨了函数式编程在异步编程领域的应用。 通过上述各个部分的学习,读者不仅能够深入了解Twisted框架的内部机制,还能够掌握如何使用...
**异步编程与Twisted框架概述** 异步编程是一种编程模型,它允许程序在等待某个操作完成时继续执行其他任务,而不是阻塞等待。这种方式提高了应用程序的效率和响应性,尤其是在处理I/O密集型任务(如网络通信)时。...
**Twisted事件驱动网络框架详解** Twisted是一个强大的开源Python库,主要用于构建异步网络应用程序。...通过熟练掌握Twisted,你可以编写出高效率、低延迟的网络程序,满足现代互联网的高性能需求。
Python的socket库是进行网络通信的基础模块,它允许程序员创建自定义的网络协议,包括文件传输。在上述的代码实例中,我们看到了如何利用socket来实现在本地主机上的文件上传功能,具体分为两个部分:`file_send.py`...
通过本教程的学习,读者能够掌握如何在Twisted框架下构建客户端和服务器端程序,并且了解如何处理网络事件和错误。 学习Twisted框架,需要对Python语言有一定的了解,并且需要对异步编程有基本的认识。只有理解了...