初用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程式設計--ftpPython程式設計FTP
- WinForm的Socket實現簡單的聊天室 IMORM
- socket.io+express實現聊天室的思考(一)Express
- 真的很平平無奇的socket聊天室呢!
- Laravel 整合 GatewayWorker 做的聊天室LaravelGateway
- node+socket.io 實現一個聊天室
- socket程式設計在TCP中的應用程式設計TCP
- Laravel 整合 workerman 做聊天室Laravel
- Python基於Socket實現簡易多人聊天室Python
- 初學程式設計所看的書籍(個人版)程式設計
- 《初識TCP》iOS、macOS實現socket client與socket serverTCPiOSMacclientServer
- 我能想到的最浪漫的Java網路教程之Socket,三步到位!!!Java
- 使用 Workman 做一個聊天室
- 30歲轉行做初級程式設計師是一種什麼樣的體驗?程式設計師
- 【Python初級】由判定迴文數想到的,關於深淺複製,以及字串反轉的問題Python字串
- 用Java程式碼實現一個簡單的聊天室功能Java
- 玩轉 PHP 網路程式設計全套之 socket stream 程式設計PHP程式設計
- WPF 後臺程式碼做 TranslateTransform 的動畫ORM動畫
- springboot + rabbitmq 做智慧家居,我也沒想到會這Spring BootMQ
- SOCKET程式設計程式設計
- PHP 編寫基本的 Socket 程式PHP
- golang中的socket程式設計Golang程式設計
- nodjs+socket.io+webRTC實現聊天室實錄之環境配置JSWeb
- 外包做的太久,分享下用的admin後臺模板
- 用python做時間序列預測一:初識概念Python
- socket程式設計 sockaddr_in 和sockaddr和in_addr詳解【轉】程式設計
- 程式設計師轉行做運營,曾被逼得每天想離職,最後...程式設計師
- (一)你的第一個Socket程式
- Python 中的 Socket 程式設計(指南)Python程式設計
- 聊天室應用開發實踐(二):實現基於 Web 的聊天室Web
- 程式間通訊(Socket)
- Java Socket程式設計Java程式設計
- socket程式設計(1)程式設計
- Socket程式設計模型程式設計模型
- Python socket程式設計Python程式設計
- React全家桶+Egg 做一個協作聊天室~React
- java小課設:使用MySQL做一個聊天室JavaMySql
- 轉載:我所理解的 PHP TraitPHPAI
- ss命令結合zabbix對socket做監控