| Игра по сети | 
|  | 
| 
| 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 |  | был не раз Сейчас нет на сайте | все понятно спс! |  |  |  |  |