1. 程式人生 > >DIY一個區域網聊天的小程式-油聊

DIY一個區域網聊天的小程式-油聊

剛學習了”郵槽”通訊.然後就想做個稍微實用的東西,就做了(~ o ~)~然後和小夥伴們快樂滴聊天
非常簡單易學,程式碼不到80行喲:
油聊一下
將下面的程式碼放在一個空工程檔案中編譯連結即可.

//Author:dalerkd
//地址:http://blog.csdn.net/dalerkd
//建立多子個執行緒例項
#include <stdio.h>
#include <process.h>
#include <windows.h>
//油聊0.1
//目標電腦名字
wchar_t wcCPName[20]=L"";
//存放目標電腦名字拼接結果
wchar_t wcCPNameEnd[40
]=L"\\\\"; //傳送訊息的子執行緒函式 unsigned int __stdcall ThreadSend(PVOID pM) { char tc[40]=""; while (TRUE) { printf_s("輸入要傳送的資訊:\r\n"); fflush(stdin); scanf_s("%s",tc,40); //1.開啟郵槽物件 HANDLE hFile=CreateFile( wcCPNameEnd,//郵槽名稱 GENERIC_WRITE, //讀寫屬性
FILE_SHARE_READ, //共享屬性 NULL, //安全屬性 OPEN_EXISTING, //開啟方式 FILE_ATTRIBUTE_NORMAL, //標誌位 NULL //檔案模組(預設留空) ); //2.向mailslot寫入 DWORD dwWritten; LPSTR lpMessage =tc;/*"UDP風暴來襲>>>>>>>>>>>"*/
DWORD dwMegLen = strlen(lpMessage)+sizeof(CHAR); WriteFile(hFile,lpMessage,dwMegLen,&dwWritten,NULL); //3.結束 CloseHandle(hFile); } return 0; } //接收訊息的子執行緒函式 unsigned int __stdcall ThreadReceive(PVOID pM) { BOOL bIsTrue = true; BYTE lpBuffer[0x60]={0}; //1.建立郵槽物件 HANDLE hSlot = CreateMailslot(L"\\\\.\\mailslot\\KITTY",0,MAILSLOT_WAIT_FOREVER,(LPSECURITY_ATTRIBUTES)NULL); //2.迴圈讀取郵槽資訊 while (bIsTrue) { //2.1獲取郵槽訊息數量 DWORD dwMsgCount = 0,dwMsgSize=0; GetMailslotInfo(hSlot,(LPDWORD)NULL,&dwMsgSize,&dwMsgCount,(LPDWORD)NULL); if (dwMsgSize==MAILSLOT_NO_MESSAGE) { Sleep(2000); continue; } //2.2迴圈獲取全部訊息 while (dwMsgCount) { DWORD dwRet; ZeroMemory(lpBuffer,dwMsgSize); if (!ReadFile(hSlot,lpBuffer,dwMsgSize,&dwRet,NULL)) { printf("ReadFile執行失敗,錯誤碼:%d",GetLastError()); return 0; } //顯示資訊 printf("郵槽內容:%s\n",lpBuffer); //計算機剩餘訊息數 GetMailslotInfo(hSlot,(LPDWORD)NULL,&dwMsgSize,&dwMsgCount,nullptr); } } return 0; } //主函式,所謂主函式其實就是主執行緒執行的函式。 int main() { wprintf_s(L"輸入對方機器名稱全稱"); //為了拼接成"\\\\機器名全稱\\mailslot\\KITTY"的形式.用於後面的通訊 wscanf_s(L"%s",wcCPName,20); wcscat_s(wcCPNameEnd,20,wcCPName); wcscat_s(wcCPNameEnd,40,L"\\mailslot\\KITTY"); const int THREAD_NUM = 2; HANDLE handle[THREAD_NUM]; handle[0] = (HANDLE)_beginthreadex(NULL, 0, ThreadSend, NULL, 0, NULL); handle[1] = (HANDLE)_beginthreadex(NULL, 0, ThreadReceive, NULL, 0, NULL); WaitForMultipleObjects(THREAD_NUM,handle, TRUE, INFINITE); return 0; }

用法

輸入主機名,也就是區域網中目標計算機的計算機屬性的計算機全名.如果你想用本機做測試你應當在開始的時候輸入一個”.”對就是小數點然後回車.

注意

它擁有一個遠端緩衝區溢位漏洞.這個漏洞是用來練習的.當然它並不影響你在區域網和你的朋友聊天.通常發生在學校機房?

技術上

它使用雙執行緒以期望自己能夠一邊接收訊息一邊傳送訊息.關於多執行緒的知識你可以從這裡獲得.

相關推薦

DIY一個區域網聊天程式-

剛學習了”郵槽”通訊.然後就想做個稍微實用的東西,就做了(~ o ~)~然後和小夥伴們快樂滴聊天 非常簡單易學,程式碼不到80行喲: 將下面的程式碼放在一個空工程檔案中編譯連結即可. //Author:dalerkd //地址:http://blog.

websocket-chat:一個網頁聊天程式

頁面: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=

用python一個融合gui的聊天程式

服務端: server: -- coding:utf-8 -- from Tkinter import * import socket; import threading import time ”’ 這是一個聊天小程式 ”’ topWv

正在載入的狀態表示 這是一個*毫無用處*的程式

/一個毫無用處的小程式/ loading. loading.. loading... 迴圈表示loading狀態 只為了皮一下XD #include<windows.h> #include<cstdlib> #include<iostream>

UDP協議實現聊天程式

  今天我們用之前講解過的UDP協議來寫一個最基礎,最簡單的網路聊天程式。 //我們通過udp協議來實現一個簡單的網路聊天程式 //這是客戶端的實現 //過程: // 1.建立套接字 // 2.繫結地址資訊 // 3.向服務端傳送資料 // 4.接

手把手教你構建一個音視訊程式

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊視訊雲終端團隊發表於雲+社群專欄 騰訊雲提供了全套技術文件和原始碼來幫助您快速構建一個音視訊小程式,但是再好的原始碼和文件也有學習成本,為了儘快的能除錯起來,我們還提供了一個免費的一鍵部署服務:您只需輕點幾下滑鼠,就可以在自己

青銅選手帶你動手擼一個部落格程式給自己(可能是第二期)~(大佬請忽略此條)

前言 上一篇的的的連結 賴了一個星期了,let us 接著上一篇的搞。 在上一篇裡搞了一下基礎設施建設,這一篇我們...稍微搞那麼一丟丟上層建築。 這一篇裡本菜雞想分享的tip 小程式登陸邏輯與登陸狀態維持的兩種姿勢 傳送評論時的一個投機倒把的小“優化” 小程式微信登陸與前端登陸狀態儲

安卓 藍芽通訊之聊天程式

安卓 藍芽聊天小程式 一、簡述   記--簡單的藍芽聊天小程式。使用的是傳統藍芽開發。(某些手機由於Android版本原因需要新增新的許可權)        兩臺裝置開啟藍芽,一臺裝置設定藍芽可見性,另一臺裝置進行連線,然後互相收發資訊。

一個phper做程式的感想

關於微信小程式,我也做了兩三個了,我想簡單總結下感想。 1.總體來說還是很簡單的 2.主要的工作和知識點有 2.1畫靜態頁面 2.2寫js,寫入互動和業務 2.3對接微信各種介面 2.4小程式的生命週期,跳轉,儲存等雜項 3.注意點

定做一個微信程式費用多少?

定做一個微信小程式費用多少?微信小程式的推出,給各行業都帶來了便利,無論是線下轉化的快消行業還是對於線上品宣的企業,都在起著重要的作用,想通過小程式宣傳推廣的商家越來越多,以至於製作小程式的需求量逐漸增大,也就催生了很多小程式製作公司來佔領這一新型市場。 小程式之所以這麼火,一方面是因為有微信強大資

FAutoTest一個 H5、程式自動化測試框架

簡介 隨著產品業務形態逐漸從 App 延升到微信小程式、微信公眾號以及 QQ公眾號等,而之前的自動化建設主要是 Native App 為主,全手工測試已無法滿足快速增長的業務需求。為提升測試效率和質量,FAutoTest 框架致力於解決 QQ、微信內 UI 的自動化問題(包括微信內 H5頁面和小

智慧程式檔案館 —— web-view 元件

哈嘍大家好~今天是百度智慧小程式學院“智慧小程式檔案館”的第一課,在接下來的日子裡,小編會定期 or 不定期的為您介紹、解答更多關於智慧小程式的使用方法,歡迎大家持續關注,留言互動~ 很多開發智慧小程式的朋友,經常會對於 web-view 元件的使用感到困惑,不知道要如何配置,才能通過使用 web

開發一個微信程式多少錢?

今天就KUK酷可科技,抽點時間和大家聊聊小程式的開發成本以及開發週期問題,希望能給一些對小程式感興趣的朋友們一些參考。 一般的小程式10天左右就可以搞定,具體開發成本請接著往下看。 小程式的優勢: 與 H5 相比,小程式的優勢幾乎是壓倒性的,幾乎與 App 相

微信程式——手把手教你寫一個微信程式

前言   微信小程式年前的跳一跳確實是火了一把,然後呢一直沒有時間去實踐專案,一直想搞但是工作上不需要所以,嗯嗯嗯嗯嗯emmmmm..... 需求   小程式語音識別,全景圖片觀看,登入授權,獲取個人基本資訊 一:基礎框架 跟著官方文件一步一步來,新建一個小程式專案就好 然後呢,畢竟預設的只是基本骨架

構思一個重量級的程式

  早在我大學的時候,我就曾經做過一個電影類的小程式,資料全部由豆瓣提供,功能比較單一,設計也很一般,連結如下:      今天在部落格園瞎逛的時候,看到有一位博主做了個汽車銷量的小程式,由於本人也是個汽車愛好者,便毫不猶豫地點了進去。   在認真地把所有功能都用了一遍之後,開發一個融入自己很多想法的汽車類小

java SpringBoot+webSocket聊天程式 (複製程式碼即可用)

1。後端程式碼 package test.conntroller.socket; import java.util.HashMap; import java.util.HashSet; import java.util.Random; import java.util.S

樹莓派跑一個簡單c++程式教程

我用的是樹莓派3代b型,所使用的是Debian系統的衍生系統raspbian(對系統不太瞭解不清楚)。樹莓派開發c++程式需要的工具有編輯器vim,偵錯程式gdb,編譯器gcc或者g++.(大神飄過就行~~ 記錄一下)用紅筆塗得地方是我命令敲錯的地方,大家忽略就行。 安裝vim   執行

Linux環境下的一個進度條程式

描述: 1.進度條原理:第一次列印一個字元,例如”#”,然後使游標定位到本行首,覆蓋之前列印的字串,第二次列印”##”,覆蓋之前列印的字串,重複上述操作,直到列印100個字元。 2.fflush(stdout): fflush(stdout)重新整理標準輸出緩衝區,把輸出

動手擼一個微信程式學生課程表頁面

分解 仔細看完課程表頁面,我們可以把頁面分解: 1. 頂部一欄:週一到週日。 2. 左側一欄:第1-12節課。 3. 中間部分灰色虛線和午休的紅線。 4. 遍歷具體課程,並繪製。 開始寫程式碼 頂部: 使用wx的for迴圈

用Python來寫一個男女相親程式|碼農的情人節

碼農這個群體,高學歷,高工資,高智商,但是不善於交流,圈子也很小,相信很多小夥伴或者周圍的小夥伴,都有相親的經歷,或者被父母逼去相親的經歷,一般都是問年齡,你要找什麼樣的,有的還特講究生肖匹配,記得網上有一個段子,說男的20-60歲都只喜歡一種型別的女孩,而20歲到60歲的女孩相親需求卻不斷