freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

綜合實(shí)習(xí)課程設(shè)計(jì)說(shuō)明書(shū)基于cs模式的tcp即時(shí)通信系統(tǒng)(參考版)

2025-06-22 04:18本頁(yè)面
  

【正文】 。[6] 李文志,申劍,盧方國(guó),柳正青,王宏,陳建偉. [J].(2):6872。[4] 周存杰. Visual C .NET網(wǎng)絡(luò)核心編程[M].北京:清華大學(xué)出版社,2002。[2] 黃承安,謝東文,許聰. C網(wǎng)絡(luò)應(yīng)用案例導(dǎo)航[M].北京:中國(guó)鐵道出版社,2003。由于與網(wǎng)絡(luò)緊密聯(lián)系,SOCKET編程的也可能出現(xiàn)各種未知的問(wèn)題,需要我們更深入地了解網(wǎng)絡(luò)協(xié)議和架構(gòu),才可能做出通用性高,穩(wěn)定性高的即時(shí)通信程序。本次設(shè)計(jì)雖然實(shí)現(xiàn)了簡(jiǎn)單的即時(shí)通信功能,但是從很多方面來(lái)說(shuō)都是不完善的:實(shí)現(xiàn)了字符聊天卻沒(méi)有實(shí)現(xiàn)多媒體即時(shí)通信;實(shí)現(xiàn)了同步套接字聊天和異步套接字傳送文件卻沒(méi)有實(shí)現(xiàn)更科學(xué)的異步套接字聊天和同步套接字傳送文件。//使用基類(lèi)(CLIENTBASE)的數(shù)據(jù)發(fā)送方法進(jìn)行文件傳送 } }}INPSERVER和SERVERBASE與INPCLIENT和CLIENTBASE類(lèi)似,所以這里不再詳述。//根據(jù)文件長(zhǎng)度定義一個(gè)BYTE (im,0,)。namespace { /// summary /// INPClient的摘要. /// /summary public class INPClient : ClientBase { public INPClient(string serverIP,int port) : base(serverIP,port) {}public void SendFile(string fileName)//發(fā)送文件類(lèi),開(kāi)啟一個(gè)文件流,將文件流依次讀入,再使用CLIENTBASE類(lèi)中的數(shù)據(jù)發(fā)送方法進(jìn)行發(fā)送 { FileStream fs = new FileStream( fileName,)。 } } }} 派生類(lèi)INPClinet:using System。 if (byteCount == 0) { // 服務(wù)器斷開(kāi)連接. } else { OnDataRecieved()。 int byteCount = 0。 } public void WaitForData() { // 異步接收數(shù)據(jù) (,0, , _dataRecievedCallback,null)。//發(fā)送數(shù)據(jù) } public void Connect()//建立與遠(yuǎn)程主機(jī)的連接 { ( new IPEndPoint( (_serverIP), _port))。//異步回調(diào) }// 可重寫(xiě)為其它超類(lèi)實(shí)現(xiàn)更強(qiáng)大的功能,例如斷點(diǎn)續(xù)傳 public virtual void OnDataRecieved(byte[] data) { if (DataRecieved != null) { DataRecieved(this, new NetworkEventArgs(_info))。 _info = new ClientInfo( _mainSoc,new byte[BUFFERSIZE])。 _port = 11000。//異步回調(diào)方法public event NetworkEventHandler DataRecieved。 private ClientInfo _info。 private string _serverIP。namespace { /// summary /// ClientBase摘要. /// /summary public class ClientBase { private const int BUFFERSIZE = 4*1024。using 。,,;。 采用異步套接字的文件傳輸文件傳輸是通過(guò)一個(gè)類(lèi)庫(kù)實(shí)現(xiàn)的。} } endregion } endregion圖7 登錄成功后的客戶(hù)端界面客戶(hù)端之間的聊天同樣使用了序列化的XML文檔,用戶(hù)在登錄成功后就會(huì)啟動(dòng)一個(gè)新的監(jiān)聽(tīng)器去監(jiān)聽(tīng)其它客戶(hù)端傳入的聊天信息并且進(jìn)行判斷再將其它用戶(hù)的聊天信息顯示在界面上。 } else if (==2) { (服務(wù)器未知錯(cuò)誤)。 =false。//新建一個(gè)用于監(jiān)聽(tīng)其它客戶(hù)端信息的線(xiàn)程 ()。 (item)。 ems[4]=ff[i].status。 ems[2]=fg[(ff[i].fg)]。 ems[0]=ff[i].account。ixxx。 ff=。)。 if(==3) { } else if(==11) { fg=(39。 string[] fg。 (data,0,chat,0,rect)。 while(true) { int rect = (data)。 } catch(Exception ex) { ()。 (d, 0, )。 byte[] d=new byte[]。 s = new MemoryStream()。 c = new Socket(,)。 CheckStatus就是用于向客戶(hù)端發(fā)送檢查信息的方法,它會(huì)向遍歷連入的客戶(hù)端(alSock),然后依次向客戶(hù)端發(fā)送信息,如果發(fā)現(xiàn)客戶(hù)端沒(méi)有響應(yīng),就會(huì)如果發(fā)現(xiàn)對(duì)方無(wú)回應(yīng),則關(guān)閉相應(yīng)的SOCKET,并更新數(shù)據(jù)庫(kù)的用戶(hù)在線(xiàn)狀態(tài),同時(shí)向該用戶(hù)的所有好友發(fā)送用戶(hù)已下線(xiàn)的通知。 // 設(shè)置引發(fā)時(shí)間的時(shí)間間隔 此處設(shè)置為5秒(5000毫秒) = 5000。計(jì)時(shí)器用于實(shí)現(xiàn)心跳報(bào)文的功能,服務(wù)器在啟動(dòng)以后就開(kāi)始計(jì)時(shí),每隔一定時(shí)間就向所有連入的客戶(hù)端發(fā)送信息,核心代碼如下: //用計(jì)時(shí)器檢查客戶(hù)端是否掉線(xiàn) aTimer = new ()。//新建一個(gè)用于監(jiān)聽(tīng)的線(xiàn)程 ()。C。 } } }以上代碼也包含了對(duì)客戶(hù)端的請(qǐng)求信息的判斷和對(duì)客戶(hù)端返回信息的生成和傳輸。 endregion } } } endregionTb_states是個(gè)用于監(jiān)視SOCKET傳入信息的文本框,便于觀(guān)察和測(cè)試相關(guān)信息: ([ + () + ] + (chat))。 (d, 0, )。 byte[] d = new byte[]。 = 10。 region 此處寫(xiě)入登錄失敗代碼 Stream ms = new MemoryStream()。 //在tb_status中寫(xiě)入服務(wù)器返回給客戶(hù)端的代碼便于測(cè)試觀(guān)察 ((d))。 (d, 0, )。 byte[] d = new byte[]。 = xxx。 = 11。 Socket sc = (Socket)alSock[(uc, 0)]。 } ()。 ff[i].fg = getf[FriendGroup].ToString()。 ff[i].nickname = getf[UserNickname].ToString()。 while (()) { ff[i].account=getf[UserAccount].ToString()。 + uid + 39。 int i=0。, )。 , UserOnline=1 where UserAccount=39。 (update TCP_UserInfo set UserIP=39。 (ds, find)。 and =, )。 SqlDataAdapter sdr = new SqlDataAdapter(select * from TCP_UserInfo join TCP_FriendInfo on =39。 = usdr[UserFav].ToString()。, )。 and UserPassword=39。 SqlDataReader usdr = (select * from TCP_UserInfo where UserAccount=
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1