-3

我正在做一个任务,我需要使用 XNA 开发机器人环境并使用来自另一台计算机的 c# TCP/IP 套接字技术控制机器人。但是当我将服务器代码插入 XNA 时,它会启动但游戏不会加载。

 protected override void Update(GameTime gameTime)
{
//Server Settings
ipAddress = IPAddress.Parse("192.168.0.11");
myList = new TcpListener(ipAddress, 8000);
myList.Start();
s = myList.AcceptSocket();

b = new byte[100];
int? k = s.Receive(b);


// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

if (Keyboard.GetState().IsKeyDown(Keys.Right))
//if (k != null)
myRectangle.X += 3;
if (Keyboard.GetState().IsKeyDown(Keys.Left))
myRectangle.X -= 3;
if (Keyboard.GetState().IsKeyDown(Keys.Up))
myRectangle.Y -= 3;
if (Keyboard.GetState().IsKeyDown(Keys.Down))
myRectangle.Y += 3;


//Screen Boundries
if (myRectangle.X <= 0)
myRectangle.X = 0;

if (myRectangle.X + myTexture.Width >= screenWidth)
myRectangle.X = screenWidth - myTexture.Width;

if (myRectangle.Y <= 0)
myRectangle.Y = 0;


s.Close();
myList.Stop();
base.Update(gameTime);
}

任何的想法?????

4

1 回答 1

1

我不是 TCP 方面的天才……但是每帧都创建一个新的 TCP 侦听器?那可能是个问题。

添加

ipAddress = IPAddress.Parse("192.168.0.11");
myList = new TcpListener(ipAddress, 8000);
myList.Start();
s = myList.AcceptSocket();

到你的 initialize()

s.Close();
myList.Stop();

到您的 UnloadContent() 或 dispose 方法。

您还应该考虑将经过的时间添加到您的动作中,因此每台计算机上的速度都相同。

于 2013-03-21T23:53:10.807 回答