cuốn sách gpt4 ai đã làm

java - Trò chơi nhiều người chơi (Java socket java.io.StreamCorruptedException: mã loại không hợp lệ: 00)

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 15:22:10 26 4
mua khóa gpt4 Nike

Máy khách và máy chủ giao tiếp thông qua hai luồng (ObjectOutputStream, ObjectInputStream);

Máy chủ đa luồng gửi dữ liệu người chơi mỗi giây để đồng bộ hóa máy khách và máy chủ. Dữ liệu về từng hành động của người chơi được gửi đến khách hàng.

Trong vòng lặp này, khách hàng nhận dữ liệu và quyết định phải làm gì với chúng. Đôi khi xảy ra lỗi với dòng này Dữ liệu đối tượng = in.readObject();

Tôi nghĩ lỗi xảy ra khi hai luồng trên máy chủ cố gắng gửi dữ liệu đến máy khách cùng một lúc. Điều này có đúng không?

while(true) {
Dữ liệu đối tượng = in.readObject();
if (dữ liệu instanceof ControlShareData) {
ControlShareData c = dữ liệu (ControlShareData);
if (c.playerId == Game.player.id) {
Game.player.keyChange(c);
}
khác {
for (Người chơi p: Game.enemies) {
if (c.playerId == p.id) {
p.keyChange(c);
}
}
}
}
khác nếu (dữ liệu instanceof ShareData) {
ShareData sd = (ShareData)dữ liệu;

Game.syncing(sd);
}
}

Phía máy chủ trông như thế này:

Chuỗi đầu tiên: (được thực hiện một lần mỗi giây cho tất cả khách hàng)

p.out.writeObject(ShareData mới(người chơi, Wrd.boxes));
p.out.flush();

và chủ đề người chơi (một người chơi - một chủ đề):

public void sendInfoAboutKey(int keyCode, giá trị boolean) {
thử {
cho (Người chơi p: Game.players) {
p.out.writeObject(ControlShareData mới(keyCode, value, id));
p.out.flush();
}
} catch (IOException e) {
Server.removePlayer(cái này);
}
}

câu trả lời hay nhất

Có, bạn nói đúng - để khắc phục điều này bạn có thể đồng bộ hóa từng Luồng đầu ra đối tượng thăm nom. Nhân tiện, chỉ nên có một cho mỗi khách hàng.

Về trò chơi java - nhiều người chơi (Java socket java.io.StreamCorruptedException: mã loại không hợp lệ: 00), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/20306138/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress