年終有空咯,分享一下自己封裝的socket類庫. 由於公司寫的socket**非常醉人,我不能忍,所以自己封裝了一下方便大家使用,現在有空也分享給園友用用看,現在還存在一定的問題,等下我列出來,希望大家能幫我出一些解決方案,完善這個東東.
直接開講,不廢話了,一共3塊,服務端,客戶端,websocket
一:服務端
serverlistener listener = new serverlistener();1.建構函式:
2.事件:
//說明:1.log中msg引數是執行流程的訊息, 2.t是當前客戶端物件, 3.t2完整訊息資料日誌,內部的處理日誌,主要用來看流程,實際用處不大.
listener.log += listener_log; //
listener_log(string msg)
//客戶端上線
listener.clientconnected += listener_clientconnected; //
listener_clientconnected(baseclient t)
//客戶端下線
listener.clientdisconnect += listener_clientdisconnect; //
listener_clientdisconnect(baseclient t)
//接收到完整訊息
listener.msgread += listener_msgread; //
listener_msgread(baseclient t, byte t2)
3.方法:
//二:客戶端呼叫start啟動監聽;
listener.start();
//停止監聽
listener.stop();
//廣播訊息,msg傳送的內容,
//type傳送到客戶端型別,傳null傳送到所有型別
//(目前只有socket和websocket2個型別)
listener.sendall(byte msg, clienttype?type)
//還有乙個屬性
client client = new client();1.建構函式:
2.事件
//3.方法日誌client.log += client_log; //
client_log(baseclient t, string t2)
//斷開連線
client.clientdisconnect += client_clientdisconnect; //
client_clientdisconnect(baseclient t)
//連線伺服器成功
client.clientconnected += client_clientconnected; //
client_clientconnected(baseclient t,bool state,string msg)
//傳送完一條訊息
client.msgsend += client_msgsend; //
client_msgsend(baseclient t)
//接收到完整訊息
client.msgread += client_msgread; //
client_msgread(baseclient t, byte t2)
//4.屬性啟動連線伺服器
client.start();
//斷開連線
client.stop();
//傳送資料
client.senddata(byte data)
///三:websocket///自動重連,預設false
///public
bool autochonglian
//////
id///
public guid id
//////
遠端網路位址
///public endpoint remoteip
//////
本地網路位址
///public endpoint localip
//////
客戶端型別
///public clienttype clienttype
//////
客戶端物件是否為空
///public
bool clientisnull
websocket已經在服務端封裝好了,直接連線就能通訊,這裡唯一要講一下的就是send的時候需要注意資料長度不能超過8184,超過分段發,
還是給一段js出來 大家自己看把
function現在來說說還需要完整的地方addmsg(msg)
var websocket = new websocket("ws://ip:port/");
websocket.onopen = function
onopen() ;
websocket.onclose = function
onclose() ;
websocket.onerror = function
onerror()
websocket.onmessage = function
onmessage(evt) ;
websocket.sendobj = function
(obj) ;
websocket.sendlen = 8184; //分段傳送資料長度不能超過8184
websocket.send = function
(msg)
} else
return
true
; }
else
};websocket.sendobj("傳送資料,一般是json字串,反正隨便你");
1.檔案傳輸還沒有做.
2.websocket 客戶端傳送大資料會有問題, 現在的情況 資料長度小於8184*5 不會有問題, 資料長度大於8184*10會頻繁出現伺服器接收資料異常問題, 這裡求大神幫忙看看!!!
還有個問題 迴圈傳送大量資料也會出現問題比如 for 20次 sendobj("1")
服務端傳送大資料到客戶端沒有問題
完事! 不介意騙點分吧 0.0
封裝好的函式
list2 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,...
用socket封裝ftp類。
最近本人寫了乙個ftp類,想和大家分享一下。ftp協議的底層實現是用socket來實現的。上圖是ftp協議的官方協議圖 可以看出它主要是由兩個socket組成的。1,控制連線,主要是用於傳送控制命令 ftp協議的建立流程 首先,客戶端建立乙個套接字1,套接字繫結的ip和埠為ftp伺服器的ip和著名埠...
封裝好的日誌模組
import logging import time import osfrom common.file path import logs path now time.strftime y m d time.localtime time.time log path os.path.join logs...