2014-09-13 52 views
1

我一直在構建聊天客戶端服務器/客戶端應用程序。除了我似乎無法想象的一件事外,我得到的大部分工作都很好。當客戶端嘗試連接到服務器時,我希望服務器檢查列表框以查看用戶是否存在。如果用戶不存在,請按正常方式繼續,但如果確實存在,則發送一個數據包或其他東西返回給客戶端,只說用戶名已被佔用,請選擇另一個。如何在接受與Winsock控件的連接時響應特定客戶端

我曾考慮過這樣做的幾種方法,但不知道它們是否是最好的方法。

  1. 創建一個單獨的端口上的第二Winsock控件在客戶端連接到該端口首先檢查用戶名,然後連接到另一個端口加入聊天。使用這種方法我能看到的唯一問題是,如果有多人連接到這個Winsock,我仍然使用原始的Winsock來解決同樣的問題。

  2. 使用當前請求連接的索引號創建變量,另一個用於保存用戶名。在檢查用戶列表之後,使用變量來標識客戶端並僅將數據發送到該客戶端。

我對Winsock編程很陌生,所以這可能是一件非常簡單的事情,我非常努力。我需要一些見解,也許甚至有些例子會很好。

回答

0

要使用套接字執行任何操作,必須先接受它。一般來說,您只有一個偵聽套接字和一個「備用」套接字列表。當你接受一個連接時,你將它傳遞給其中一個備用套接字,然後它只爲該客戶端做任何工作。

TL:DR;接受所有連接,然後當您收到該名稱時,根據需要進行響應,可能會斷開連接或要求他們再試一次。

+0

謝謝你的回答。我讓自己變得越來越難,那麼我需要自己去想。 Winsock(索引)永遠是當前連接的襪子。而不是創建一個新的winsock來做檢查,我只是對當前的winsock進行檢查,然後將回復發回給winsock(索引)。我不知道爲什麼我總是在想事情。讓事情更復雜,然後他們需要它。 – FrostByte 2014-09-16 17:28:12

相關問題