我正在尝试从使用libgdx作为接口的客户端连接到服务器。我在客户端和服务器上都使用Kryonet。但它不起作用。知道什么是错的吗?
以下是我在客户端中使用的代码:
override func viewWillAppear(_ animated: Bool) {
let idxPath = IndexPath(row: savedSelection, section: 0)
let cell = collectionView?.cellForItem(at: idxPath)
cell?.isSelected = true
collectionView?.scrollToItem(at: idxPath, at: UICollectionViewScrollPosition.centeredHorizontally, animated: false)
}
这是服务器代码:
Client client = new Client();
Kryo kryo = client.getKryo();
kryo.register(String.class);
client.start();
new Thread() {
public void run() {
try {
client.connect(5000, "localhost", 54555, 54777);
client.addListener(new Listener() {
public void received(Connection connection, Object object) {
if (object instanceof String) {
String response = (String) object;
System.out.println(response);
}
}
});
} catch (IOException e) {
Log.warn("expection", e);
}
}
}.start();
client.sendTCP("Hey There");
这是我得到的错误:
Server server = new Server();
Kryo kryo = server.getKryo();
kryo.register(String.class);
server.start();
try {
server.bind(54555, 54777);
} catch (IOException e) {
e.printStackTrace();
}
server.addListener(new Listener() {
public void received (Connection connection, Object object) {
if (object instanceof String) {
String request = (String)object;
System.out.println("Server"+request);
String response = "Login succes";
connection.sendTCP(response);
}
}
});
答案 0 :(得分:0)
好的,我认为这段代码已经修好了:
服务器:
server = new Server();
Kryo kryo = server.getKryo();
kryo.register(SRq.class);
server.start();
try {
server.bind(54555, 54777);
} catch (Exception e) {
System.err.println("Failed to bind to port!");
}
server.addListener(new Listener() {
@Override
public void received(Connection connection, Object object) {
if(object instanceof SRq) {
System.out.println("Server " + ((SRq) object).data);
SRq sRq = new SRq();
sRq.data = "Data";
connection.sendTCP(sRq);
}
}
});
客户端:
client = new Client();
Kryo kryo = client.getKryo();
kryo.register(SRq.class);
client.start();
try {
client.connect(6000, "localhost", 54555, 54777);
} catch (Exception e) {
System.err.println("Failed to connect to server!");
}
client.addListener(new Listener() {
@Override
public void received(Connection connection, Object object) {
if(object instanceof SRq) {
Gdx.app.log("Client", ((SRq) object).data);
}
}
});
System.out.println("Connected to server!");
SRq sRq = new SRq();
sRq.data = "Log in";
client.sendTCP(sRq);
要记住的事情:
SRq.class
只是一个内部有公共String
的课程kryonet-2.21-all
。下载jar,在你的核心文件夹中创建一个名为libs
的文件夹,将jar放入其中,然后将其添加到build.gradle
(核心依赖项中):compile fileTree(dir: 'libs', include: '*.jar')