В данный момент продвинулся до RequestAuthLogin... пытаюсь сформировать пакет... на сколько понимаю первые 128 байт это логин+пароль, потом нули, и это нужно будет ещё обработать ключём рса, который мы получаем из инита и дескрамблируем, после этого некодированные 14 байт логина и 16 байт пароля? И вопрос, нужно ли это блоуфишить, если да, то каким ключём, с инита? вроде в ггаус от сервера ключа небыло, или я ошибаюсь?
Добавлено через 14 минут
Тин, учитывая что это, по сути, моя первая софтина на яве, я сделал отдельный класс, в нём создал функцию коннекта, получения пакета и отправки.
Короче вот код, думаю ты сможешь понять:
JAVA Код:
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
public class L2Socket
{
static Socket la2_socket =
new Socket();
static InetAddress AddrAsIAddr =
null;
public static void connect
(){
try {
AddrAsIAddr =
InetAddress.
getByName(Constants.
hostname);
} catch (Exception e
) {
System.
err.
println("Could not get IP-address");
};
try {
SocketAddress adr =
new InetSocketAddress
(AddrAsIAddr,Constants.
port_ls);
System.
out.
println("Socket configured");
la2_socket.
connect(adr,
3000);
System.
out.
println("Connected to "+AddrAsIAddr+
":"+Constants.
port_ls);
}
catch (SocketTimeoutException e
) {
System.
err.
println(e
);
}
catch (IOException e
) {
System.
err.
println(e
);
}
catch (Exception e
) {
System.
err.
println(e+
" | Could not establish socket!");
};
}
public static byte[] recivePKG
(int size
){
byte[] buf =
new byte[size];
if(la2_socket.
isConnected()) {
//System.out.println("la2_socket is Connected");
try {
la2_socket.
getInputStream().
read(buf
);
} catch (IOException e
) {
// TODO Auto-generated catch block
e.
printStackTrace();
}
}
return buf;
}
public static void SendPKG
(byte[] buf
){
try {
la2_socket.
getOutputStream().
write(buf
);
} catch (IOException e
) {
// TODO Auto-generated catch block
e.
printStackTrace();
}
}
public static void close
(){
try {
la2_socket.
close();
} catch (IOException e
) {
// TODO Auto-generated catch block
e.
printStackTrace();
}
}
}
Потом после SendPKG я сразу запускаю recivePKG. Но это на этапе логин сервера. В геймсервере планирую сделать архитектуру, где будет что-то типа:
// Цикл до тех пор, пока есть поступающие сообщения
while (la2_socket.isConnected()) { //пока сокет подключен
//Отображаем полученное сообщение
System.out.println("Server: " + recivePKG(тут я придумаю расчёт размера));
}
Ну и внутри этого цикла сделать обработку по типу пакета, что мол если пакет типа Say или Say2 (не помню что за чат отвечает), то работать с пакетом, если нет то не обращать внимания.
Я понимаю что код нубский, не судите строго.