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