01/10/2018, 09:49

Hỏi về lập trình Socket

mọi người cho em hỏi:
em đang làm về lập trình Socket, làm game tung xí ngầu , em đang bí ở chỗ là làm sao để mỗi lần file .exe của client được chạy lên thì có thể tạo cho client đó 1 ID để có thể phân biệt được các client.
Ai có kình nghiệm, hay xử lý rồi, cho em xin gợi ý với ạ
Cảm ơn mọi người nhiều

Trần Hoàn viết 11:55 ngày 01/10/2018

Sử dụng địa chỉ IP có được không bạn?
Nếu sợ người dùng disconnect rồi connect mạng khác bị đổi IP thì dùng địa chỉ MAC làm ID?

NG viết 11:56 ngày 01/10/2018

sử dụng multiple thread nhé bạn ^^.
mỗi client là 1 thread, lúc connect cho client gửi id của mình, sau đó bạn phù phép để lưu và liên hệ các thread với id để quản lý …,
Cụ thể thì bạn suy nghĩ tiếp đi nhé

lảng tử viết 11:58 ngày 01/10/2018

lúc mình demo là trên một máy, thì có cách khác được không bạn

lảng tử viết 11:50 ngày 01/10/2018

làm sao để tạo được ID của các client khác nhau hả pạn, mình đang bí ở chỗ mỗi lần client được mở lên, thì nó sẽ tự tạo ID cho nó, và client sau sẽ khác ID với client trước

Trần Hoàn viết 12:04 ngày 01/10/2018

Nếu bạn quản lý kiểu client-server thì tạo thêm danh sách người dùng, có đăng nhập
Nếu bạn chơi game kiểu p2p như CS thì dùng địa chỉ mạng.
Ngoài ra, khi truy cập vào game room, mỗi người chơi sẽ gửi ID của mình lên (thường là username)

lảng tử viết 11:53 ngày 01/10/2018

dùng địa chỉ mạng ở đây là IP hả bạn

Dark.Hades viết 11:50 ngày 01/10/2018

Nên dùng mac, ip thì mạng gia đình sẽ khó lọc

lảng tử viết 12:01 ngày 01/10/2018

có cách nào k dùng IP hay Mac không bác, bởi vì khi demo đồ án thì mình demo trên một máy

Trần Hoàn viết 12:05 ngày 01/10/2018

Nếu đã multiplayer trên cùng máy thì không ai lại đi bật 2 ứng dụng riêng lẻ cả, người ta sẽ có mục offline multiplayer riêng, network multiplayer riêng.

Tất nhiên cũng có cách, đó là khi khởi động ứng dụng, client sẽ tự tạo một chuỗi string ngẫu nhiên làm ID. Khi connect vào game room, nếu trong game room đã có 1 người chơi khác cùng ID (xác suất trùng cỡ 1 phần vài nghìn tỉ với chuỗi 16 ký tự) thì phải reset lại ID của mình đến khi khác mới được phép truy cập vào game room đó.

Nhưng mình nghĩ bạn không việc gì phải tự làm khó bản thân thế cả. Demo máy ảo không được sao

Mai Hữu viết 12:01 ngày 01/10/2018

Bác sử dụng đa luồng. Một luồng trên server chạy chấp nhận các kết nối. Sau khi chấp nhận các kết nối thì tạo một luồng riêng biệt chỉ lắng nghe riêng cho client đó

lảng tử viết 11:55 ngày 01/10/2018

thanks bác nhiều nhé

Minh Tuấn viết 12:03 ngày 01/10/2018

Bác rành về lập trình song song không? Cho mình hỏi xíu ?

lảng tử viết 12:01 ngày 01/10/2018

đã ngĩ đến nó nhưng mak k biết tạo sao hết bác

chazo1994 viết 12:05 ngày 01/10/2018

Em cung cấp cho thg client đấy một ID (hay tài khoản vs mật khẩu). mỗi lần chơi game bắt nó đăng nhập vậy, khi đó client sẽ gửi ID đăng nhập lên cho sever -> sever biết thg đó là thg nào

chazo1994 viết 11:55 ngày 01/10/2018

vấn đề như vậy chưa đủ bạn à. vì mỗi lần kết nối thì đúng là sever tạo cho nó một luồng riêng biệt nhưng làm sao để biết lần đăng nhập sau cũng là nó (vì lần sau sever cũng lại tạo một luồng mới) mà trong này chủ thớt yêu cầu dùng ID. vậy nên mình nghĩ mỗi lần đăng nhập client sẽ gửi một ID được cấp riêng lên cho sever.

lảng tử viết 12:04 ngày 01/10/2018

vấn đề ở chỗ làm sao mỗi lần đăng nhập thì client sẽ có một ID riêng đc a ?

chazo1994 viết 11:51 ngày 01/10/2018

Để Đơn giản thì ở lần khởi động game đầu tiên bạn cấp cho thg client một ID riêng, sau đó lưu vào đâu đó. rồi từ lần thứ 2 trở đi bạn dùng ID đó cho thg client.

Mai Hữu viết 11:55 ngày 01/10/2018

Mình chỉ biết trên c# thôi bạn

Mai Hữu viết 12:03 ngày 01/10/2018

Mình biết trên c# thôi bác

lảng tử viết 11:52 ngày 01/10/2018

thì đang mình dang làm trên C# nek bác

Bài liên quan
0