初學c# -- 學習筆記 小結


學了到了好些東西, 做了一些練習。

一、C# winform Socket

1、程序主要部分只是用了 Panel、Picturebox、Label、RicheditBox四個組件,滾動條、編輯框什么的都自定義了,應該比較容易看清楚。
2、服務端設定地址為192.168.0.103,端口設定為5188,客戶端指向服務端也是這個地址,根據需要自行修改。
服務端:
//監聽端口
private int port = 51888;
private TcpListener myListener;
ArrayList MessList = new ArrayList();
int MessCount = 0;
...
...
IPAddress[] addrIP = Dns.GetHostAddresses("192.168.0.103"); //ip地址
localAddress = addrIP[0];
客戶端:
//建立網絡通訊
try
{
client = new TcpClient("192.168.0.103", 51888); //定義服務器端ip地址和端口,與服務器端定義要一致
TcpInfo.AppendText("本機EndPoint:" client.Client.LocalEndPoint); //本機的ip地址和端口號
TcpInfo.AppendText("與服務器建立連接成功");
linkFlag = true;
}
catch
{
TcpInfo.AppendText("與服務器連接失敗");
return;
}
3、程序運行時必須首先運行“服務端”的ChatServer.exe,點擊“開始監聽”后,再運行“客戶端”的可執行文件,用戶名隨便起一個,密碼隨便填。服務端每個登錄用戶開1個線程,客戶端開1個線程進行數據交互。
4、數據傳輸定義:
string[] sArray = getMess.Split(new char[6] { '[', ']', '$', '$', '$', '$' });
//sArray[1] 發送信息用戶的ip
//sArray[3] 發送消息的版塊
//sArray[4] 發送消息的內容
//sArray[5] 用戶名
//sArray[6] 時間
服務端據此進行消息派發,客戶端根據返回的消息分類顯示。
5、由於使用繪圖功能,會產生屏幕的閃爍,所以用生成位圖的方式處理,達到減小閃爍。可能會產生信息更新較慢或不連貫,因為在最右側將全部數據動作寫了一遍。同時,由於在線程上不能對原組件進行添加等操作,所以按照右側內容變化來更新數據信息顯示:
 private void TcpInfo_TextChanged(object sender, EventArgs e)
 {.........}
繪圖處理:
......
Bitmap localBitmap = new Bitmap(conter_panel.Width, conter_panel.Height);
 Graphics bitmapGraphics = Graphics.FromImage(localBitmap);
bitmapGraphics.Clear(BackColor);
bitmapGraphics.SmoothingMode = SmoothingMode.AntiAlias;
Draw(conter_panel.ClientRectangle, bitmapGraphics, 18, true, 0, Color.FromArgb(90, 143, 0), Color.FromArgb(90, 143, 0));
conter_panel.BackgroundImage = localBitmap;
conter_panel.Controls.Add(rc);
......
6、程序為了學習方便未使用數據庫,所有數據交互都放在內存中進行。

二、Winform網盤(全格式音視頻在線預覽)

實際上就一簡單的三層,客戶端通過服務端連接數據庫,服務端讀寫數據庫發送到客戶端。

1、程序功能:
使用VLC的媒體庫(DLL),程序服務端支持大多數音頻、視頻等格式的預覽,打開文件的方式為本地文件夾,將video、audio等文件夾和exe文件放在一起;
客戶端支持大多數格式的音頻、視頻等格式的在線預覽、下載,並可上傳各類型文件到服務器。
視頻文件:
.asf;.avi;.divx;.dv;.flv;.gxf;.m1v;.m2v;.m2ts;.m4v;.mkv;.mov;.mp4;.mpeg;.mpeg1;.mpeg2;.mpeg4;.mpg;
.mts;.mxf;.ts;.vob;.wmv;.m4a;.m4p;.mod;Webm;raw;rm;rmvb;
音頻文件:
.mp1;.mp2;.mp3;.wav;.a52;.aac;.ac3;.dts;
.flac;.ogg;.ogm;.mka;
為避免偏差,強制了文件名,用MP4和MP3播放,讓VLC去自己識別了,例如1234.avi.mp4,123.wav.mp3。
圖像文件:
.bmp;.bid;.jpg;.jpeg;.jfif;.gif;.tif;.tiff;.png;.ico;
2、數據庫:
使用sql2008,將數據庫文件附加上去就可以了,批量文件處理,寫了2個標量值函數和存儲過程,通過程序傳遞參數調用存儲過程來進行記錄批量處理,級聯關系看數據庫關系圖。
3、配置:
除sql2008外,部署IIS,將目錄指向包含服務端EXE文件和文件夾的路徑就可以了,設置匿名訪問就行了,其他功能基本不用。
在程序里需自行設定你的SQL密碼,用戶為sa;IIS、客戶端、服務端的ip都設為了192.168.0.103端口518888,根據需要自行修改,修改時注意,可能多個文件都要修改ip。
4、其他說明:
服務端是64位程序,也可改到32位,需將DLL文件替換成32位的,項目屬性選擇“首選32位”;客戶端是32位的,也可以選擇64位,替換成64位的DLL文件后,項目屬性去掉“首選32位”。播放進度條和播放控制沒做,程序里面有注釋,或百度VLC相關資料。VLC為32位、64位2.24版本的,目前是最新版,關注VLC官網更新。
5、練習的內容:
cpu、內存監控;本地媒體文件播放;網絡流媒體播放;winform文件遠程下載;winform Socket文件上傳等。
取得服務端文件用了2種方式,http和Socket,上傳文件大家就不要參考百度的例子了,什么webclient、http類、winform aspx什么的,絕大多數用不成,能用的還老出問題,就別費勁了,只參考Socket文件上傳文章就可以了,別走彎路了。
客戶端程序上傳每次20k,覺得慢自己改。有個問題,上傳文件超過500M服務端會掛掉,因為c#的FromBase64String泄漏了,可以采用byte[]合並的方式分段,來解決該問題,請自行處理解決,其他轉換方式就不要試了,不支持圖像和音視頻的格式。

 用戶:16000至16010,密碼1234546,先用服務端添加一個文件,要不客戶端打不開。

 播放這塊不全懶得做了,客戶端全播放的放http://www.haolizi.net/example/view_10278.html

這里了

下載:https://pan.baidu.com/s/1slxZwVN

 

程序里面還有錯誤,不修改了,只是一些練習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM