using system;
namespace jh.sockets
///
/// 執行緒狀態引數
///
class parm
public parm(jhthreadstatus nstatus,object obj)
jhthreadstatus status;
object objparm;
///
/// 上下文物件
///
public object objparm
set}
///
/// 控制狀態
///
public jhthreadstatus status
set}
}///
/// 通訊資料處理介面
///
public inte***ce iobserver //
// 上乙個觀察者
//iobserver prev //
// 新增觀察者到後面,如果已經存在鍊錶中則不做任何操作
//void add(iobserver observer); //
// 插入觀察者到下乙個觀察者的前面
//void insert(iobserver observer);
//刪除觀察者
void remove(iobserver observer);
//是否存在鍊錶中
bool i***ist(iobserver observer);
}///
/// 通訊資料處理類的基類,只能派生
///
public abstract class observer : iobserver
return ;}
///
/// 資料處理過載方法.
///
/// tcpclient類 例項
/// 記憶體資料流
/// 處理結果,如果不希望後面的處理者繼續處理資料,則返回false,否則返回true;
public virtual bool ondeal(***mdata cd)
//附加的自身初始化操作
public virtual bool init()
//提前初始化介面
public virtual bool beforeinit()
//初始化後處理介面
public virtual bool afterinit()
//刪除前處理介面
public virtual bool beforeexit()
//下乙個觀察者
iobserver next = null;
public iobserver next
set}
//上乙個觀察者
iobserver prev = null;
public iobserver prev
set}
//新增觀察者
public void add(iobserver observer)
else next.add(observer);//加到後面
}///
/// 插入觀察者到下乙個觀察者的前面
///
///
public void insert(iobserver observer)
///
/// 刪除觀察者
///
///
public void remove(iobserver observer)
else
}///
/// 查詢是否存在
///
///
///
public bool i***ist(iobserver observer)}
///
/// 日誌處理基類,本身從通訊資料處理類的基類派生。
///
class log : observer
public log(string slogfile)
~log()
// 日誌檔案帶路徑名稱
private string logfile;
public string logfile
set}}
}using system;
using system.collections;
using system.io;
using system.threading;
namespace jh.sockets
constructed",id);
}thread t = null;
public void start()
started",id);}}
public void stop()}
}///
/// 析構方法
///
~***mdatamgr()
unconstructed",id);
}public void datanotiyfythread()
工作中",id);}}
catch(exception e)
finally
console.writeline("jh data distributing thread of jh data distributor exited",id);}}
parm dnflag = null;
arraylist adata = new arraylist();
innerobserver root = new innerobserver();
///
/// 觀察者根節點類 定義
///
internal class innerobserver : observer
public void dealdata()
removeat(0);}}
}///
/// 未處理資料個數
///
public int datacount
}///
/// 根據索引返回未處理資料
///
internal ***mdata this[int index]
}///
/// 根據索引刪除資料
///
/// 索引
public void removeat(int index)}}
///
/// 接收到新的資料提交
///
/// 客戶端連線
/// 資料流
public void adddata(jhclient client,memorystream s,int len)
}///
/// 新增觀察者
///
///
public void add(iobserver observer)
}///
/// 刪除觀察者
///
///
public void remove(iobserver observer)
}///
/// 在最前面插入觀察者
///
///
public void insert(iobserver observer)
}// 取觀察者個數
// int getobservercount()
// }
TCP通訊C 實現
tcp客戶端與伺服器端通訊模型 伺服器端實現 include include pragma comment lib,ws2 32 using namespace std void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 ...
socket實現TCP通訊
tcp是一種可靠的,面向連線的協議。在socket中,建立tcp連線的過程大致如下 伺服器端 1.初始化套接字 2.建立伺服器socket 3.將本機位址與伺服器socket繫結在一起 4.伺服器開始監聽 5.伺服器確認請求 確認之前時一種阻塞的狀態 accept 函式生成乙個新的socket。6....
C 實現TCP通訊
服務端 include initsock.h include include include include using namespace std cinitsock initsock 初始化winsock庫 sockaddr in serveraddr sockaddr in remoteadd...