狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# websocket與html+js實現文件發送與接收處理

admin
2019年11月12日 18:19 本文熱度 3949
服務器端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Fleck;
using System.Threading;
using System.IO;
using System.Net.WebSockets;
using System.Net.Sockets;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
FleckLog.Level = LogLevel.Debug;
var allSockets = new List<IWebSocketConnection>();
var server = new WebSocketServer("ws://192.168.31.37:7181");
server.Start(socket =>
{
socket.OnOpen = () =>
{
Console.WriteLine("Open!");
allSockets.Add(socket);
};
socket.OnClose = () =>
{
Console.WriteLine("Close!");
allSockets.Remove(socket);
};
socket.OnMessage = message =>
{
Console.WriteLine(message);
allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
};
socket.OnBinary = file =>
{
string path = ("D:/test.jpg");
//創建一個文件流
FileStream fs = new FileStream(path, FileMode.Create);
//將byte數組寫入文件中
fs.Write(file, 0, file.Length);
//所有流類型都要關閉流,否則會出現內存泄露問題
fs.Close();
};
});
//string ss = Console.ReadLine();
var input = File.Open("D://test.jpg",FileMode.Open);
while (true)
{
Thread.Sleep(2000);
byte[] s = new byte[input.Length];
input.Read(s, 0, s.Length);
foreach (var socket in allSockets.ToList())
{
socket.Send(s);
}
input.Close();
input = File.Open("D://test.jpg", FileMode.Open);
}
}
}
}

客戶端:
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Chat Client</title>
<meta charset="utf-8" />
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script>
<script type="text/javascript" >
//判讀瀏覽器是否支持websocket
$().ready(function() {
if ( !window.WebSocket ) {
alert("童鞋, 你的瀏覽器不支持該功能啊");
}

});

//在消息框中打印內容
function log(text) {
$("#log").append(text+"\n");
}

//全局的websocket變量
var ws;

//創建連接
$(function() {
$("#uriForm").submit(function() {
log("準備連接到" + $("#uri").val());

ws = new WebSocket($("#uri").val());
//連接成功建立后響應
ws.onopen = function() {
log("成功連接到" + $("#uri").val());
}
//收到服務器消息后響應
ws.onmessage = function(e) {
//log("收到服務器消息:" + e.data + "''\n");
var reader = new FileReader();
reader.onload=function(eve){
//判斷文件是否讀取完成
if(eve.target.readyState==FileReader.DONE)
{
//讀取文件完成后,創建img標簽來顯示服務端傳來的字節數//組
var img =document.createElement("img");
//讀取文件完成后內容放在this===當前
//fileReader對象的result屬性中,將該內容賦值img標簽//瀏覽器就可以自動解析內容格式并且渲染在瀏覽器中
img.src=this.result;
//將標簽添加到id為show的div中否則,即便是有img也看不見
document.getElementById("show").appendChild(img);
}
};
//調用FileReader的readAsDataURL的方法自動就會觸發onload事件
reader.readAsDataURL(e.data);
}
//連接關閉后響應
ws.onclose = function() {
log("關閉連接");
$("#disconnect").attr({"disabled":"disabled"});
$("#uri").removeAttr("disabled");
$("#connect").removeAttr("disabled");
ws = null;
}
$("#uri").attr({"disabled":"disabled"});
$("#connect").attr({"disabled":"disabled"});
$("#disconnect").removeAttr("disabled");
return false;
});
});

//發送字符串消息
$(function() {
$("#sendForm").submit(function() {
if (ws) {
var textField = $("#textField");
ws.send(textField.val());
log("我說:" + textField.val());
textField.val("");
textField.focus();
}
return false;
});
});

//發送arraybuffer(二進制文件)
$(function() {
$("#sendFileForm").submit(function() {
var inputElement = document.getElementById("file");
var fileList = inputElement.files;

for ( var i = 0; i < fileList.length; i++) {
console.log(fileList[i]);
log(fileList[i].name);
//發送文件名
ws.send(fileList[i].name);
// reader.readAsBinaryString(fileList[i]);
//讀取文件  
       var reader = new FileReader();
reader.readAsArrayBuffer(fileList[i]);
// reader.readAsText(fileList[i]);
//文件讀取完畢后該函數響應
reader.onload = function loaded(evt) {
var binaryString = evt.target.result;
// Handle UTF-16 file dump
log("\n開始發送文件");
ws.send(binaryString);
}
}
return false;
});
});

$(function() {
$("#disconnect").click(function() {
if (ws) {
$("#log").empty();
ws.close();
ws = null;
}
return false;
});
});

$(function() {
$("#reset").click(function() {
$("#log").empty();
return false;
});
});


</script>
</head>
<body>
<form id="uriForm">
<input type="text" id="uri" value="ws://192.168.31.37:7181"
style="width: 200px;"> <input type="submit" id="connect"
value="Connect"><input type="button" id="disconnect"
value="Disconnect" disabled="disabled">
</form>
<br>

<form id="sendFileForm">
<input id="file" type="file" multiple />
<input type="submit" value="Send" />
<input type="button" id="reset" value="清空消息框"/>
</form>
<br>
<form id="sendForm">
<input type="text" id="textField" value="" style="width: 200px;">
<input type="submit" value="Send">
</form>
<br>
<form>
<textarea id="log" rows="30" cols="100"
style="font-family: monospace; color: red;"></textarea>
</form>
<br>
<div id=''show''></div>
</body>
</html>


該文章在 2019/11/12 18:19:34 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved