Python&Flash开发斗兽棋---2.网络基础

7 篇文章 0 订阅
6 篇文章 1 订阅

既然是网络对战,首先要解决的是网络通信问题。

我的服务器端用的是Python+nginx,客户端用的是Flash。游戏素材方面的资源通过HTTP,从nginx服务器加载。游戏逻辑控制采用原生态的SOCKET连接,Flash与Python之间通信。

前者没什么好说的,关键在后者。


Python作为服务器端,我使用了一个叫做Twisted的第三方Python库(下载地址:http://pypi.python.org/pypi/Twisted/)。顺便得说一下,Twisted依赖pywin32和zop库(下载地址:http://pypi.python.org/pypi/zope.interface)。

zop安装方法如下

1:先下载并运行一个叫做ez_setup.py的脚本,这个脚本会自动到网上下载相关的安装程序,提示完成后,会在python安装目录的的scripts文件下生成几个exe可执行文件。
2:将zope.interface-3.8.0-py2.7-win-amd64.egg放到{python安装目录}\Scripts下
3:开始->运行->CMD

C:\>cd Python26\Scripts
C:\Python26\Scripts>easy_install.exe zope.interface-3.6.4-py2.6-win32.egg

安装完毕。


然后我们简单测试一下

from twisted.internet import reactor

接下来写一最简单的个socket的服务器:

import os
if os.name!='nt':
    from twisted.internet import epollreactor
    epollreactor.install()    
else:
    from twisted.internet import iocpreactor
    iocpreactor.install()
from twisted.internet.protocol import Factory,Protocol
from twisted.internet import reactor
class gameSocket(Protocol):
    #有新用户连接至服务器
    def connectionMade(self):
        print 'New Client'
    
    #客户端断开连接
    def connectionLost(self,reason):
        print 'Lost Client'
    
    #收到客户端发送数据
    def dataReceived(self, data):
        print 'Get data:' + str(data)
        #向该客户端发送数据
        self.transport.write('your msg:'+ str(data))

if __name__=='__main__':
    f = Factory()
    f.protocol = gameSocket
    reactor.listenTCP(5200,f)
    print 'server started...'
    reactor.run()


Fash客户端代码

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.net.Socket;
	import flash.utils.ByteArray;
	
	public class PythonFlashSocket extends Sprite
	{
		private var m_Socket:Socket;
		
		public function PythonFlashSocket()
		{
			m_Socket = new Socket();
			m_Socket.addEventListener(Event.CONNECT, onSocketConnect);
			m_Socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketReceived);
			m_Socket.connect("127.0.0.1", 5200);
		}
		
		private function onSocketConnect(e:Event):void
		{
			this.m_Socket.writeUTFBytes("I'm Flash");
		}
		
		private function onSocketReceived(e:ProgressEvent):void
		{
			trace(this.m_Socket.readUTFBytes(m_Socket.bytesAvailable));
		}
	}
}


我们需要准备几个工具:

1.python-2.7.2.amd64.msi

Python 2.7,可以从Python官网下载到

2.pywin32-217.win-amd64-py2.7.exe

Python 2.7Windows开发环境

3.Twisted-12.0.0.win-amd64-py2.7.exe

Python网络编程第三方库,很好用

4.zope.interface-3.8.0-py2.7-win-amd64.egg

Twisted依赖zope包

5.ez_setup.py

在安装zope支持包时需要使用到


参考资料:

用python来开发webgame服务端(1)

用python来开发webgame服务端(2)

用python来开发webgame服务端(3)

用python来开发webgame服务端(4)

用python来开发webgame服务端(5) 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ctbinzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值