日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

networkcomms来做图片采集系统

發(fā)布時間:2025/3/15 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 networkcomms来做图片采集系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


非常強大 networkcomms2.3.1 通信框架,以前幫朋友做了一個圖片采集系統(tǒng),客戶端采集相片后,通過TCP通信傳送到服務(wù)器,本文把客戶端傳送圖片到服務(wù)器的這部分提取出來。

由于每張圖片的大小都不大,所以我們在傳輸圖片時,沒有采用傳送文件的方式,而是采用了直接序列化圖片的方式來進行。

當(dāng)前支持的圖片類型: jpg,png,gif 您可以自己添加擴充支持的圖片類型

通信框架采用英國的開源的networkcomms2.3.1 通信框架?? 序列化器采用開源的protobuf

?(因為空間大小限制,不包含通信框架源碼,通信框架源碼請另行下載)

我們先開看一下實現(xiàn)的效果

服務(wù)器端:


客戶端:



在服務(wù)器端,我們把收到的圖片保存在D盤根目錄下(您可以另外指定路徑),打開D盤看到收到的圖片如下:


下面看一下具體的過程

第一步,首先進行服務(wù)器端的設(shè)置

? (1)監(jiān)聽端口:

??? 淮安摜蛋網(wǎng) http://www.gamefrye.com/

???? IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text));??
??????????? TCPConnection.StartListening(thePoint, false);
??????????? button1.Text = "監(jiān)聽中";
??????????? button1.Enabled = false;

(2) 針對圖片上傳寫對應(yīng)的處理方法:

?NetworkComms.AppendGlobalIncomingPacketHandler<ImageWrapper>("UploadImage", IncomingUploadImage);


復(fù)制代碼
? //處理客戶端發(fā)來的圖片
??????? private void IncomingUploadImage(PacketHeader header, Connection connection, ImageWrapper wrapper)
??????? {
??????????? try
??????????? {
??????????????? //具體的解析工作由通信框架完成
??????????????? //從圖片包裝器中獲取到圖片文件和圖片名稱
??????????????? Image image = wrapper.Image;
??????????????? string fileName = wrapper.ImageName;

????????????
??????????????? //獲取文件擴展名
??????????????? int index = fileName.LastIndexOf('.');
??????????????? string extion = fileName.Substring(
??????????????????? index + 1, fileName.Length - index - 1);
??????????????? extion = extion.ToLower();
??????????????? //設(shè)置文件格式
??????????????? ImageFormat imageFormat = ImageFormat.Bmp;

??????????????? switch (extion)
??????????????? {
??????????????????? case "jpg":
??????????????????? case "jpeg":
??????????????????????? imageFormat = ImageFormat.Jpeg;
??????????????????????? break;
??????????????????? case "png":
??????????????????????? imageFormat = ImageFormat.Png;
??????????????????????? break;
??????????????????? case "gif":
??????????????????????? imageFormat = ImageFormat.Gif;
??????????????????????? break;
??????????????? }
??????????????? //此處,我們手工指定了一個保存路徑,您可以自定義
??????????????? image.Save(@"D:\" + fileName, imageFormat);


??????????????? ResMsgContract contract = new ResMsgContract();
??????????????? contract.Message = "上傳成功";
??????????????? //發(fā)送回復(fù)信息給客戶端
??????????????? connection.SendObject("ResUploadImage", contract);

??????????? }
??????????? catch (Exception ex)
??????????? {

??????????? }
??????? }

復(fù)制代碼

第二步:客戶端的設(shè)置

(1)連接服務(wù)器:

?


復(fù)制代碼
?//給連接信息對象賦值
??????????? connInfo = new ConnectionInfo(txtIP.Text, int.Parse(txtPort.Text));

??????????? //如果不成功,會彈出異常信息
??????????? newTcpConnection = TCPConnection.GetConnection(connInfo);

??????????? TCPConnection.StartListening(connInfo.LocalEndPoint);

??????????? button1.Enabled = false;
??????????? button1.Text = "連接成功";

復(fù)制代碼

(2)從本地選擇圖片并上傳


復(fù)制代碼
? openFileDialog1.Filter = "圖片文件|*.jpg|所有文件|*.*";

??????????? if (openFileDialog1.ShowDialog() == DialogResult.OK)
??????????? {


??????????????? string shortFileName = System.IO.Path.GetFileName(openFileDialog1.FileName);
?????????????????
??????????????? //圖片包裝類
??????????????? ImageWrapper wrapper = new ImageWrapper(shortFileName, Image.FromFile(openFileDialog1.FileName));

??????????????? //發(fā)送圖片包裝類到服務(wù)器,并獲取返回信息
??????????????? ResMsgContract resMessage = newTcpConnection.SendReceiveObject<ResMsgContract>("UploadImage", "ResUploadImage", 8000, wrapper);

??????????????? if (resMessage.Message == "上傳成功")
??????????????? {
??????????????????? MessageBox.Show("圖片已經(jīng)上傳到服務(wù)器");
??????????????? }
??????????????? else
??????????????? {
??????????????????? MessageBox.Show("圖片沒有發(fā)送成功");
??????????????? }

??????????? }??????

復(fù)制代碼

(三)關(guān)于 ImageWrapper類

在客戶端與服務(wù)器端通信的過程中,我們注意到上面的程序中使用了一個ImageWrapper類,用來傳遞圖片(Image)對象。

?ImageWrapper類,存放在MessageContract類庫中,此類用來序列化圖片

我們知道Image類并不直接支持序列化,所以我們采用的方式是序列化之前把Image轉(zhuǎn)化為二級制數(shù)據(jù),反序列化之前再把二級制數(shù)據(jù)轉(zhuǎn)化為Image類。

我們只負責(zé)定義ImageWrapper類,其他工作通信框架幫我們做好了。

?

?ImageWrapper
工作到此完成,很少的代碼量,就幫我們實現(xiàn)了傳遞客戶端圖片保存在服務(wù)器的功能。

注意:此種方式并不適合傳遞比較大的圖片,如果圖片比較大,比如10M以上,最好以傳送文件的形式,分段發(fā)送.

總結(jié)

以上是生活随笔為你收集整理的networkcomms来做图片采集系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 永久免费快色 | 四虎影| av在线操 | 女人性做爰24姿势视频 | 中文在线а√在线 | 亚洲手机看片 | 97人人草 | 中文在线а√在线 | 亚洲二区av | 欧美国产三级 | 欧美日日夜夜 | 欧美一区二区在线观看 | 日韩r级电影在线观看 | 国产日产久久高清欧美一区 | 欧美日韩免费观看视频 | 日本黄视频网站 | 欧美一区二区激情视频 | 天干夜天干天天天爽视频 | 欧美做爰全过程免费看 | 少妇被又大又粗又爽毛片久久黑人 | 日韩欧美高清在线观看 | 99热播| 国产11页 | 女人和拘做爰正片视频 | 国产真实自拍 | 欧美七区 | 国产伦理一区 | 麻豆一区二区三区在线观看 | 免费黄色看片 | 国产欧美视频在线 | 亚洲一级Av无码毛片久久精品 | av免播放器在线观看 | 狠狠躁日日躁夜夜躁2022麻豆 | 亚洲天堂av网站 | 午夜av网 | 色av影院 | 女性毛片 | 91久久国产综合久久91精品网站 | 国产第3页 | 涩涩国产 | 亚洲码欧美码一区二区三区 | 欧美大尺度做爰啪啪床戏明星 | 高潮白浆女日韩av免费看 | 黄色小视频免费 | 日本免费网站在线观看 | 欧美日韩中文字幕在线视频 | 无码人妻aⅴ一区二区三区玉蒲团 | 日韩精品片| 欧美性色黄大片手机版 | 亚洲乱码国产乱码精品 | juliaann欧美二区三区 | 天天操夜夜干 | 国产欧美日韩专区发布 | 在线免费观看日本 | 亚洲a级片 | 国产欧美激情 | 一级a性色生活片久久无 | 最近中文字幕在线中文视频 | 日本男男激情gay办公室 | 免费一区二区视频 | 中文字幕一区二区精品 | 火影黄动漫免费网站 | 男人的天堂视频在线观看 | 97人妻人人揉人人躁人人 | av永久网站 | 毛片哪里看 | 男男gay羞辱feet贱奴vk | 成人午夜精品视频 | 自拍偷拍日韩 | 午夜色播 | 久久99精品国产麻豆婷婷洗澡 | 婷婷激情网站 | 成人av动漫在线观看 | 蜜桃视频无码区在线观看 | 国产精品水嫩水嫩 | 一级做a爱片久久 | 制服丝袜快播 | 国产真实老熟女无套内射 | 国产天天综合 | 一级影片在线观看 | 精品国产成人亚洲午夜福利 | 男性裸体全身精光gay | 超碰资源总站 | 蜜桃视频污在线观看 | 欧美国产一区二区三区 | 亚洲精品色图 | 欧美成人影音 | 性福宝av| 亚洲涩情 | 亚洲天堂手机 | 日日日日日日bbbbbb | 国产精品久久在线观看 | 国产精品久久久久久久久久小说 | 可以免费看的黄色 | 国产免费一级视频 | 内谢少妇xxxxx8老少交视频 | 51成人网 | 少妇久久久久久被弄高潮 | 国产精品成人免费视频 |