Windows编程之网络之邮件槽通讯
第6節 使用郵件槽傳輸數據
網絡通訊的理論很復雜,可是初學者不考慮性能的話,可以使用很簡單的模式。一般而言網絡通訊有兩種模式,點對點模式或者廣播模式。點對點模式就像一對一輔導,雙方都能聽清楚對方說什么,并作出相應的處理,若是因網絡故障丟失數據,雙方都知道中間出了問題,可以重新發送數據來解決這個故障;廣播模式就像課堂教學,老師無法確信受眾們都聽清了所說的內容,若某個同學因某種原因而丟包,老師并不知道這個包已經被丟失了。
郵件槽分為收件箱和發件箱兩類。收件箱接收網絡上發來的郵件包,而發件箱向其他電腦(也可以是本機)發送郵件。發送郵件時,需要指定接收者的IP地址,或者使用表示廣播給全局域網的收件箱;接收數據稍微復雜點,因為必須事先建好收件箱(CreateMailslot)其他人發給你的郵件才有可能收到,若是其他人發郵件時該收件箱已經被注銷,那么就收不到郵件了。在建立郵件槽的時候,郵件槽必須具有下面的形式:\.\mailslot[path]name這個形式中,前綴\.\mailslot\是必不可少的,而且注意都是小寫字符。寫到C語言程序里,就應該是這樣的形式"\\.\mailslot\"。其中的.表示本地計算機。若是想把消息包發送到遠程計算機,遠程計算機的郵件槽具有“\Computername\mailslot"這樣的形式,若是想要廣播到全局域網,則應使用"\\mailslot"這樣的形式。當然,本地計算機沒有創建遠程郵件槽的權利,因此不用使用CreatMailslot函數,若想要發送到遠程計算機,則使用CreateFile就可以了。
本地計算機名稱可以通過GetComputerName函數獲得。代碼沒有給出,請同學們自行查詢幫助。
下面以一個共享畫板為例。參與畫板的每個人可以選擇一種顏色畫筆,然后在公共畫板上做圖。程序通過郵件槽共享鼠標信息,程序中使用了公共對話框來選擇一種顏色;
訂正:
由于使用了公共對話框,因此在程序的包含文件中增加一項#include:
另,若對程序中不停出現的4996號Warning感到厭煩,可添加上圖中最后一行的#pragma命令。
在WinLearn中新建工程WinStep3;
1、在菜單中添加一個頂層菜單,然后在頂層菜單下添加4個子菜單,如圖:
圖1 菜單設計
表2 菜單項設置
2、在快捷鍵表中添加4個快捷鍵。
圖2 快捷鍵設計
3、設計網絡消息。
程序片段24 網上傳輸的消息
程序片段25 全局變量
程序片段26 主程序,注意其中左側特出的地方為初始化
4、 消息處理函數WndProc部分代碼。
程序片段27 鼠標左鍵按下時記錄上次的點
程序片段28 對選擇畫筆的菜單項的代碼
程序片段29 鼠標移動時畫出軌跡并廣播
程序片段30 每隔50ms檢索廣播消息并直接畫出
總結
以上是生活随笔為你收集整理的Windows编程之网络之邮件槽通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows编程之互动与动画
- 下一篇: 抖音小三文案(推荐89句)