Четверг, 06 Мая 2021, 16:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Java » Игра по сети (Игра по сети)
Игра по сети
Edison6Дата: Среда, 09 Января 2013, 14:13 | Сообщение # 1
TRUE Programmer
Сейчас нет на сайте
Здравствуйте форумчане хотел бы у вас спросить что я не так сделал?Я хотел написать чтобы спрайт ставился на те координаты которые я передам, но для начала просто сообщение послываю но оно не работает
Вот код:
Код
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
   

public class Game extends BasicGame {
  public Game(String title) { super(title); }
   
  static String Message;
  static int port = 65534;
  static String line;
  static DataInputStream in;
  static DataOutputStream out;
  public static void main(String[] args) throws SlickException, IOException
  {
   AppGameContainer app = new AppGameContainer(new Game("Test Game"));
   app.setDisplayMode(1440, 900, false);
   app.start();
  }
   
  @Override
  public void render(GameContainer container, Graphics g)    throws SlickException
  {
   g.drawString("Message : "+line, 0, 20);
  }
   
  @Override
  public void init(GameContainer container) throws SlickException
  {
   try  
   {
   ServerSocket ss = new ServerSocket(port);
   Socket socket = ss.accept();
   System.out.println("Client connected!");
   InputStream sin = null;
   sin = socket.getInputStream();
   OutputStream sout = null;
   sout = socket.getOutputStream();
   in = new DataInputStream(sin);
   out = new DataOutputStream(sout);
   line = null;
   }
   catch (IOException e)
   {
    e.printStackTrace();
   }
  }
   
  @Override
  public void update(GameContainer container, int delta) throws SlickException  
  {
   try {
    line = in.readUTF();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }  
  }
}

Это клиент
Код
import java.net.*;
import java.io.*;

public class Client {
  public static void main(String[] ar)
  {
   int serverPort = 65534;  
   String address = "127.0.0.1";  
   try  
   {
    InetAddress ipAddress = InetAddress.getByName(address);  
    System.out.println("Any of you heard of a socket with IP address " + address + " and port " + serverPort + "?");
    Socket socket = new Socket(ipAddress, serverPort);
    System.out.println("Yes! I just got hold of the program.");
     
    InputStream sin = socket.getInputStream();
    OutputStream sout = socket.getOutputStream();
    DataInputStream in = new DataInputStream(sin);
    DataOutputStream out = new DataOutputStream(sout);
     
    BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
     
    String line = null;
    System.out.println("Type in something and press enter. Will send it to the server and tell ya what it thinks.");
    System.out.println();
    while (true)  
    {
     line = keyboard.readLine();       
     System.out.println("Sending this line to the server...");
     out.writeUTF(line);  
     out.flush();
     line = in.readUTF();  
     System.out.println("The server was very polite. It sent me this : " + line);
     System.out.println("Looks like the server is pleased with us. Go ahead and enter more lines.");
     System.out.println();
    }
   }  
   catch (Exception x)
   {
    x.printStackTrace();
   }
  }
}

Добавлено (08.01.2013, 21:43)
---------------------------------------------
Игра падает

Добавлено (08.01.2013, 22:42)
---------------------------------------------
Использую SLICK2D

Добавлено (09.01.2013, 14:13)
---------------------------------------------
Я так понял помочь некому....


Берил сбрей усы
MDKedДата: Среда, 09 Января 2013, 14:30 | Сообщение # 2
частый гость
Сейчас нет на сайте
Edison6, я для сетевых взаимодействий использую KryoNet - прост в освоении и лёгок в употреблении, попробуй его.

Стою на асфальте я в лыжи обутый.
То ли лыжи не едут, то ли я баганутый.
"O-Wars"
Edison6Дата: Среда, 09 Января 2013, 16:46 | Сообщение # 3
TRUE Programmer
Сейчас нет на сайте
MDKed, а если без использования билблиотек не знаешь в чем может быть проблема?

Добавлено (09.01.2013, 16:46)
---------------------------------------------
Пробую CryoNet

и код сервера

Код
import java.io.IOException;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryonet.*;

public class JServer {

  public static void main(String[] ar) throws IOException
  {
   Server server = new Server();
   server.start();
   server.bind(50000, 50001);
   server.addListener(new Listener()  
   {   
    public void received (Connection connection, Object object)
    {   
     if (object instanceof SomeRequest) {   
      SomeRequest request = (SomeRequest)object;     
      System.out.println(request.text);        
      SomeResponse response = new SomeResponse();   
      response.text = "Thanks!";        
      connection.sendTCP(response);      
      }  
     }
    });
   Kryo kryo = server.getKryo();
   kryo.register(SomeRequest.class);
   kryo.register(SomeResponse.class);
  }
}

Вот код клиента:
Код
import java.io.IOException;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryonet.*;

public class JClient
{
  public static void main(String[] ar) throws IOException
  {
   Client client = new Client();
   client.start();
   client.connect(2015, "127.0.0.1", 50000, 50001);
   SomeRequest request = new SomeRequest();
   request.text = "Here is the request!";
   client.sendTCP(request);
   client.addListener(new Listener()  
   {   
    public void received (Connection connection, Object object)
    {     
     if (object instanceof SomeResponse)  
     {        
      SomeResponse response = (SomeResponse)object;    
      System.out.println(response.text);    
      }   
     }
    }
   );
   Kryo kryo = client.getKryo();
   kryo.register(SomeRequest.class);
   kryo.register(SomeResponse.class);
  }
}



Берил сбрей усы
СибирскийДата: Среда, 09 Января 2013, 16:50 | Сообщение # 4
Javatar
Сейчас нет на сайте
В какой момент падает?

Edison6Дата: Среда, 09 Января 2013, 17:20 | Сообщение # 5
TRUE Programmer
Сейчас нет на сайте
при соедиденении:
Image

Добавлено (09.01.2013, 17:02)
---------------------------------------------
Все разобрался!

Добавлено (09.01.2013, 17:20)
---------------------------------------------
Одно непонятно для чего нужны классы
SomeRequest и SomeResponse


Берил сбрей усы
MDKedДата: Среда, 09 Января 2013, 23:37 | Сообщение # 6
частый гость
Сейчас нет на сайте
Edison6, Крионет - пересылает класы

Стою на асфальте я в лыжи обутый.
То ли лыжи не едут, то ли я баганутый.
"O-Wars"
СибирскийДата: Четверг, 10 Января 2013, 12:27 | Сообщение # 7
Javatar
Сейчас нет на сайте
MDKed, это бред. Траффик пожалей

Edison4Дата: Четверг, 10 Января 2013, 13:08 | Сообщение # 8
был не раз
Сейчас нет на сайте
Как то странно работает сервер....В дебаг режиме все отсылает а когда так запускаю то не присылает данные.
и не хочет выключать сервер при подачи данных "exit"
кто нить гляньте
Сервер
Код
public class JServer {
  static String message;
  static String oldmessage;
  public static void main(String[] ar) throws IOException
  {
   Server server = new Server();
   server.start();
   server.bind(40012, 40013);
   System.out.println("Сервер запущен!!");
   Kryo kryo = server.getKryo();
   kryo.register(String.class);
    
   server.addListener(new Listener() {
    public void received(Connection connection, Object object) {
     if (object instanceof String) {
      String mge = (String) object;
      message = new String();
      message = mge;
      System.out.println(message);
     }
    }
   });
   while(true)
   {
    if (message!=oldmessage && message!=null && message!="")
    {
     System.out.println("Рассылка.....");
     oldmessage = message;
     server.sendToAllTCP(message);
     if (message=="exit")
     {
      server.sendToAllTCP(message);
      server.close();
      break;
     }
    }

   }
    
   }
   
}

Клиент
Код
import java.io.IOException;
import java.util.Scanner;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryonet.*;

public class JClient
{

  public static void main(String[] ar) throws IOException
  {
   Scanner in = new Scanner(System.in);
   System.out.println("Введите IP :");
   String ip =  in.next();
   Client client = new Client();
   client.start();
   client.connect(2015, ip , 40012, 40013);
   Kryo kryo = client.getKryo();
   kryo.register(String.class);
   client.addListener(new Listener() {
    public void received(Connection connection, Object object) {
     if (object instanceof String) {
      String mge = (String) object;
      System.out.println(mge);
       
     }
    }
   });
   while(true)
   {
    client.sendTCP(in.next());
   }
  }
}

x-and1988Дата: Четверг, 10 Января 2013, 13:12 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Цитата (Сибирский)
MDKed, это бред. Траффик пожалей

Для начала, если не вдаваться в подробности и не жалеть каждый переданный байт - то нормально.


Изучаю Java
My new project
My old project
IIyxMASTERДата: Четверг, 10 Января 2013, 13:36 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Потому что нельзя сравнивать строки через "==" .
Ссылки на объекты разные, вот и не работает.
Строки сравнивать нужно через equals
Код
if (message.equals("exit"))   
       {   
        server.sendToAllTCP(message);   
        server.close();   
        break;   
       }

и все твои !="" тоже нужно переписывать соответственно


Сообщение отредактировал IIyxMASTER - Четверг, 10 Января 2013, 13:37
Edison4Дата: Четверг, 10 Января 2013, 14:45 | Сообщение # 11
был не раз
Сейчас нет на сайте
все понятно спс!
Форум игроделов » Программирование » Java » Игра по сети (Игра по сети)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг