初用SOCKET做聊天室程式後所想到的…… (轉)
初用SOCKET做聊天室程式後所想到的…… (轉)[@more@] 很早的文章了,是我初學WINSOCKET時寫的。裡面對WINSOCKET是如何使用並沒講到什麼,只是一個很簡單的。適合我們菜鳥們看看;) 初學WinSocket,看了原來從網上一直沒時間看的幾篇文章。受益菲淺,一時興起,就邊學邊寫了這個小型的。因為是用的CSocket類做的,用的是的,所以可以在裝了TCP/IP服務協議並聯通了的機器之間使用(如、Inte網 - 沒試過,應該可以的)。
程式其實不難,可是引起了我的一些想法,拿出來與大家共享!既然兩個機器之間可以相互傳送資訊,這樣的話,如果在 Client 的程式裡實現開關機、螢幕抓圖等功能的話。然後隨時判斷 Server方的資訊,並在接收了指定的的資訊後相應的動作。如: Sever對Client說:“親愛的關機吧” 然後Client方收到訊息,判斷!如果
Server說的是 “親愛的關機吧”,那麼就 -> 關機。諸如此類,則可如 BO 或 NEYSPY 一樣,只是要Client程式做得隱蔽一點。
大家都在用OICQ或ICQ在網上聊天吧!米2 :)忽然想到其實我也可以做到哦。如果花時間再改進一下,則 Client 要做一些修改。如加上一個 TreeCtrl 用來顯示上線的好友名單。然後像 Server 那樣判斷是在向誰傳送資訊,然後在傳送的資訊里加上一特徵說明是發給誰的,還是發給 Server ,Server一看,哦!給某某啊,好的。再將此資訊發給某某。 而 Server 這邊要加入對的操作,首先記錄所有的,隨時記錄線上的使用者,根據剛上線的使用者的 ID 來列出此 ID 的好友名單,將其中線上的過濾出來轉發給此使用者以告知線上好友名單。
呼呼~~~一口氣說這麼多可把我累壞了。如果你仔細看,再加上你對Winsock有一定的理解的話。會覺得做一個OICQ也不難嗎!哈,其實要做一個完美的 OICQ like 的東東是不容易的,要考慮到很多,如堵塞等情況的處理。不過基本道理了解以後,加上CSocket又是如此地方便,我們也可以做出我們自己的聊天室!!!
其實我想做一個 OICQ like 的真正能用的東東,可俺自知能力有限,學 Winsock 時間也不長。所以能夠找到志同道和的哥們一起做是最好不過的了,如果你看到這兒並且也有興趣的話就to:tlovexyj@yeah.net">俺吧!我的想法是隻收錄程式設計師,所有使用者分類別, 分、VC、VB等幾個。然後可檢視所有註冊了的程式設計師名單,這樣可以讓programmer們更方便地交流,不是嗎。還有一些新功能的加入,一定讓我們的這個本世紀最具創意的 OICQ like 像 Half of life 一樣比 Quake 更出色。
給出下載: /Server.zip">Server 44K
次日...
無意中在BBS上看到一篇介紹怎麼做聊天室的文章。仔細看了一下,發現我的想法和他基本一致,當然他描述得的比較詳細。
不敢獨享,特粘過來與大家同享:
程式中端所起的作用。
從圖示中可以看到伺服器端的兩個winsock之間並不存在直接的通訊,同時sckServer1和sckClient2及sckServer2和sckClient1
之間是不能直接通訊的。這也即是說若 sckClient1向sckClient2發出資訊,資訊首先被sckServer1接受,sckServer1再將資訊 傳給程式
的資訊處理部分,資訊處理部分再將處理好的資訊傳給sckServer2,再由sckS erver2傳給sckClient2。反之亦然。那麼伺服器端的資訊
處理部分又進行什麼工作呢?
1. 對通訊的通道數作一些限制。
2. 對使用後已關閉的通道,必須能夠重新使用以節省資源。
3. 必須對所傳遞的資料包資訊作甑別,從而作出不同的處理。 透過解開資料的包頭就可區分不同的資訊。
網上聊天有兩種方式:第一種,以廣播方式;第二種,以點對點的方式。廣播方式 即所有客戶都能收到某一客戶發出的資訊。點對點的方式即想說“悄悄話”的一對客戶專門開闢了一間談話的“小屋”,別的客戶不能“聽”到他們的談話。點對點方式資料的包頭為“PT”,廣播方式則無包頭。
程式其實不難,可是引起了我的一些想法,拿出來與大家共享!既然兩個機器之間可以相互傳送資訊,這樣的話,如果在 Client 的程式裡實現開關機、螢幕抓圖等功能的話。然後隨時判斷 Server方的資訊,並在接收了指定的的資訊後相應的動作。如: Sever對Client說:“親愛的關機吧” 然後Client方收到訊息,判斷!如果
Server說的是 “親愛的關機吧”,那麼就 -> 關機。諸如此類,則可如 BO 或 NEYSPY 一樣,只是要Client程式做得隱蔽一點。
大家都在用OICQ或ICQ在網上聊天吧!米2 :)忽然想到其實我也可以做到哦。如果花時間再改進一下,則 Client 要做一些修改。如加上一個 TreeCtrl 用來顯示上線的好友名單。然後像 Server 那樣判斷是在向誰傳送資訊,然後在傳送的資訊里加上一特徵說明是發給誰的,還是發給 Server ,Server一看,哦!給某某啊,好的。再將此資訊發給某某。 而 Server 這邊要加入對的操作,首先記錄所有的,隨時記錄線上的使用者,根據剛上線的使用者的 ID 來列出此 ID 的好友名單,將其中線上的過濾出來轉發給此使用者以告知線上好友名單。
呼呼~~~一口氣說這麼多可把我累壞了。如果你仔細看,再加上你對Winsock有一定的理解的話。會覺得做一個OICQ也不難嗎!哈,其實要做一個完美的 OICQ like 的東東是不容易的,要考慮到很多,如堵塞等情況的處理。不過基本道理了解以後,加上CSocket又是如此地方便,我們也可以做出我們自己的聊天室!!!
其實我想做一個 OICQ like 的真正能用的東東,可俺自知能力有限,學 Winsock 時間也不長。所以能夠找到志同道和的哥們一起做是最好不過的了,如果你看到這兒並且也有興趣的話就to:tlovexyj@yeah.net">俺吧!我的想法是隻收錄程式設計師,所有使用者分類別, 分、VC、VB等幾個。然後可檢視所有註冊了的程式設計師名單,這樣可以讓programmer們更方便地交流,不是嗎。還有一些新功能的加入,一定讓我們的這個本世紀最具創意的 OICQ like 像 Half of life 一樣比 Quake 更出色。
給出下載: /Server.zip">Server 44K
次日...
無意中在BBS上看到一篇介紹怎麼做聊天室的文章。仔細看了一下,發現我的想法和他基本一致,當然他描述得的比較詳細。
不敢獨享,特粘過來與大家同享:
程式中端所起的作用。
從圖示中可以看到伺服器端的兩個winsock之間並不存在直接的通訊,同時sckServer1和sckClient2及sckServer2和sckClient1
之間是不能直接通訊的。這也即是說若 sckClient1向sckClient2發出資訊,資訊首先被sckServer1接受,sckServer1再將資訊 傳給程式
的資訊處理部分,資訊處理部分再將處理好的資訊傳給sckServer2,再由sckS erver2傳給sckClient2。反之亦然。那麼伺服器端的資訊
處理部分又進行什麼工作呢?
1. 對通訊的通道數作一些限制。
2. 對使用後已關閉的通道,必須能夠重新使用以節省資源。
3. 必須對所傳遞的資料包資訊作甑別,從而作出不同的處理。 透過解開資料的包頭就可區分不同的資訊。
網上聊天有兩種方式:第一種,以廣播方式;第二種,以點對點的方式。廣播方式 即所有客戶都能收到某一客戶發出的資訊。點對點的方式即想說“悄悄話”的一對客戶專門開闢了一間談話的“小屋”,別的客戶不能“聽”到他們的談話。點對點方式資料的包頭為“PT”,廣播方式則無包頭。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988573/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python Socket 程式設計:聊天室示例程式Python程式設計
- 初試python的socket程式設計--ftpPython程式設計FTP
- 完善的Socket Server程式 (轉)Server
- 一個非常簡單完整的聊天室演示程式,推薦初學者下載 (轉)
- android socket聊天室——也不僅僅是聊天室Android
- 用VB學做“駭客”程式 (轉)
- socket伺服器建聊天室的問題伺服器
- WinForm的Socket實現簡單的聊天室 IMORM
- Socket.IO打造基礎聊天室
- Laravel 整合 GatewayWorker 做的聊天室LaravelGateway
- socket.io+express實現聊天室的思考(一)Express
- 由ASP.NET所謂前臺呼叫後臺、後臺呼叫前臺想到HTTP——理論篇ASP.NETHTTP
- Laravel 整合 workerman 做聊天室Laravel
- 初學程式設計所看的書籍(個人版)程式設計
- 透析ICMP協議(四): 牛刀初試之二 應用篇ping(RAW Socket) (轉)協議
- 由ASP.NET所謂前臺呼叫後臺、後臺呼叫前臺想到HTTP——實踐篇(一)ASP.NETHTTP
- 由ASP.NET所謂前臺呼叫後臺、後臺呼叫前臺想到HTTP——實踐篇(二)ASP.NETHTTP
- node+socket.io 實現一個聊天室
- 用 API 做的 ServerSocket 例子 (轉)APIServer
- 30 歲轉行做初級程式設計師是什麼樣的體驗程式設計師
- 自己用VC來做自己的專業安裝程式 (轉)
- socket程式設計在TCP中的應用程式設計TCP
- 《初識TCP》iOS、macOS實現socket client與socket serverTCPiOSMacclientServer
- 基於express和socket.io的超簡易版聊天室Express
- 我能想到的最浪漫的Java網路教程之Socket,三步到位!!!Java
- 岑文初:做個簡單的程式設計師程式設計師
- 30歲轉行做初級程式設計師是一種怎樣的體驗?程式設計師
- socket.io+angular.js+express.js做個聊天應用(一)AngularJSExpress
- socket.io+angular.js+express.js做個聊天應用(二)AngularJSExpress
- socket.io+angular.js+express.js做個聊天應用(三)AngularJSExpress
- socket.io+angular.js+express.js做個聊天應用(四)AngularJSExpress
- WPF 後臺程式碼做 TranslateTransform 的動畫ORM動畫
- Python基於Socket實現簡易多人聊天室Python
- 用C#下的Raw Socket程式設計實現網路封包監視 (轉)C#程式設計
- 初級Java程式設計師所面臨的4大挑戰Java程式設計師
- 30歲轉行做初級程式設計師是一種什麼樣的體驗?程式設計師
- ERP價格戰背後所引發的思考(轉)
- 【程式人生】程式設計初學者的良言警句(轉)程式設計