socket lokales netzwerk
Verfasst: Sonntag 16. August 2009, 15:22
Hi Leute,
Ich hab vor kurzem angefangen mich für das Thema
Netzwerkprogrammiereung zu interressieren und hab ein kleines
Programm geschrieben das über eine Lan-Verbindung vom einen
Client über den Server zum anderen Client die Koordinaten der
Spielfigur übergeben SOLL(Zusätzlich verwende ich Pygame zur
Darstellung).
Wenn ich das ganze an einem Computer teste, also den Server starte
und die 2 Clienten, dann gehts.
Wenn ich jetzt aber auf einem Computer den server starte und einen
Clienten und auf einem anderen Computer den anderen Clienten dann
bekomme ich keine Verbindung zum stehen.
Muss ich vielleicht etwas umschreiben?
Welche Host-IP/Port soll ich eintragen?
Ist ein Socket überhaupt dafür gedacht?
Kennt ihr vielleicht ein paar gute Tuts?
Anfänger bittet um Hilfe:
Bitte nicht am Code erschrecken
Server:
Client:
Vielen Dank,
phil
ps.: kann leider erst wieder nächstes Wochenende antworten
Ich hab vor kurzem angefangen mich für das Thema
Netzwerkprogrammiereung zu interressieren und hab ein kleines
Programm geschrieben das über eine Lan-Verbindung vom einen
Client über den Server zum anderen Client die Koordinaten der
Spielfigur übergeben SOLL(Zusätzlich verwende ich Pygame zur
Darstellung).
Wenn ich das ganze an einem Computer teste, also den Server starte
und die 2 Clienten, dann gehts.
Wenn ich jetzt aber auf einem Computer den server starte und einen
Clienten und auf einem anderen Computer den anderen Clienten dann
bekomme ich keine Verbindung zum stehen.
Muss ich vielleicht etwas umschreiben?
Welche Host-IP/Port soll ich eintragen?
Ist ein Socket überhaupt dafür gedacht?
Kennt ihr vielleicht ein paar gute Tuts?
Anfänger bittet um Hilfe:
Bitte nicht am Code erschrecken

Server:
Code: Alles auswählen
import socket
import sys
import pygame
from pygame.locals import *
pygame.init()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host ="127.0.0.1"
port =6251
s.bind((host, port))
s.listen(1)
conn1,addr1 = s.accept()
print "Client-Adresse: ", addr1
conn1.send("Verbunden")
conn1.setblocking(1)
s.listen(1)
conn2,addr2 = s.accept()
print "Client-Adresse: ", addr2
conn2.setblocking(1)
conn2.send("Verbunden")
print "Zum Verlassen EXIT eingeben"
get=""
while(get!="exit"):
data = conn1.recv(1000000)
conn2.send(data)
data = conn2.recv(1000000)
conn1.send(data)
conn.close()
s.close()
Code: Alles auswählen
import socket
import sys,random
import pygame
from pygame.locals import *
pygame.init()
bgc=(0,0,0)
scrsize=(800,600)
screen=pygame.display.set_mode((scrsize))
screen.fill(bgc)
pygame.display.flip()
clock=pygame.time.Clock()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "127.0.0.1"
port = 6251
s.connect((host, port))
data = s.recv(1000000)
print data
class Player:
def __init__(self,x,y,speed):
self.x=x
self.y=y
self.speed=speed
self.img=pygame.Surface((30,30))
self.img.fill((255,255,255))
def move(self,up,down,left,right):
self.x+=right*self.speed
self.x-=left*self.speed
self.y+=down*self.speed
self.y-=up*self.speed
def draw(self,scr):
scr.blit(self.img,(self.x-self.img.get_width()/2,self.y-self.img.get_height()/2))
player={}
w,h=scrsize
player[0]=Player(random.randint(0,w),random.randint(0,h),3)
player[1]=Player(random.randint(0,0),random.randint(0,0),3)
def main():
up=down=left=right=0
while 1:
screen.fill(bgc)
clock.tick(60)
for e in pygame.event.get():
if e.type==QUIT:
sys.exit()
if e.type==KEYDOWN:
if e.key==K_UP:
up=1
if e.key==K_DOWN:
down=1
if e.key==K_LEFT:
left=1
if e.key==K_RIGHT:
right=1
if e.type==KEYUP:
if e.key==K_UP:
up=0
if e.key==K_DOWN:
down=0
if e.key==K_LEFT:
left=0
if e.key==K_RIGHT:
right=0
player[0].move(up,down,left,right)
for i in range(len(player)):
player[i].draw(screen)
s.send(str(player[0].x)+","+str(player[0].y))
data = s.recv(1000000)
data=data.split(",")
player[1].x=int(data[0])
player[1].y=int(data[1])
pygame.display.flip()
if __name__ == "__main__": main()
s.close()
phil
ps.: kann leider erst wieder nächstes Wochenende antworten