python编写socket_用python编写Socket程序

好的,所以我使用python来学习socket编程。我会在适当的时候转到c。在

我想我会写一个愚蠢的游戏来学习套接字;你可以自己使用源代码(.bmp文件是我用gimp制作的50x50像素图像)。服务器此时不工作。(我很确定它挂在“c”上,

addr=s.accept())

我认为一个处理这个问题的方法是使用两个线程。一个线程来处理通信服务器端。和一个线程来处理游戏循环,也是服务器端。目标是能够在服务器和客户端上玩游戏。我读过“twisted module”可以处理多线程,我以前从未做过多线程,但它应该是相当重要的。在

其次,我想实现服务器和客户机之间的通信,这样我就不会使网络过载,也不会激怒我的ISP(Internet服务提供商,面向经验不足的开发人员)。有没有一种方法可以测试网络,看看服务器和客户端之间实际传递了多少信息?在

现在,我只有少量的信息在客户端和服务器之间传递(只有当玩家通过按下按钮与客户端或服务器交互时才会传递信息)。有没有一个更聪明的消息传递模型可以替代?在

在游戏服务器.py在import pygame, sys, os

from pygame.locals import *

import socket

s = socket.socket()

host = socket.gethostname()

port = 6000

s.bind(('0.0.0.0',port))

s.listen(5)

#while True:

# c, addr = s.accept()

# print 'Got connection from', addr

# c.send('Hi blork, I am not rational either, but this works. So I am happy!')

# c.close()

window = pygame.display.set_mode((640,50))

pygame.display.set_caption("My Trivial Network Game: Get to the right side of the screen!")

class Ship():

xvel = 0

yvel = 0

x = 0

y = 0

image = pygame.image.load('ship.bmp')

def physics(self):

self.x += self.xvel

self.y += self.yvel

return self

class Bolt():

xvel = 0

yvel = 0

x = 640

y = 0

image = pygame.image.load('bolt.bmp')

def physics (self):

self.x += self.xvel

self.y += self.yvel

return self

def input(events):

for event in events:

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_ESCAPE:

sys.exit()

# elif event.key == pygame.K_f:

# ship.xvel = 2

elif event.key == pygame.K_z:

bolt.xvel = -4

s.send('zap')

pygame.display.set_caption("Oh no! Jon's being a dork!!")

c.close()

if event.type == QUIT:

sys.exit(0)

#def MakeShip():

# pygame

ship = Ship()

bolt = Bolt()

box = pygame.Rect(0,0,640,50)

loopVal = 0

while True:

pygame.draw.rect(window,(0,0,0),box,0)

window.blit(ship.image, (ship.x,ship.y))

window.blit(bolt.image, (bolt.x,bolt.y))

if loopVal == 0:

loopVal += 1

c, addr = s.accept()

print "Now have connection from address: ", addr

input(pygame.event.get())

ship.physics()

bolt.physics()

pygame.display.update()

if (ship.x > 640):

pygame.display.set_caption("You win!")

在游戏客户端.py在

^{pr2}$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值