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

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?

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é :smiley:

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

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

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)

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

1 Like

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

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

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 :v:

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 đó

thanks bác nhiều nhé :slight_smile:

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

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

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 :slight_smile:

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.

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

Để Đơ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.

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

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?