標籤:csocket 網路編程 區域網路聊天 socket傳檔案 socket編程
首先,並不建議大家用Csocket,經驗之談,CAsyncSocket基礎上派生的一個同步阻塞Socket的封裝類,也就是說編程的過程很多麻煩,但是我堅持下來了。。。。。好煩。。。。
.................................................分割線.....................................................................................
思想其實很容易理解,S(伺服器端)建立socket,Listen()用戶端是否串連,然後Accept()串連上來的socket。而C(用戶端)建立socket,然後串連Connect()S,這樣基本的結構就形成了。然後就可以Send和Receive了。
而傳文字和傳檔案,我建議兩個連接埠進行,並且另起一個線程用於傳檔案,這樣會避免錯誤,畢竟Csocket是同步阻塞的,好煩。。。。如果用一個socket很容易出錯,具體點容易Receive錯誤的資訊。
具體步驟:
1.伺服器擷取本機IP地址,顯示到IP控制項中,然後S的使用者告訴C的使用者,我的IPi是這個,你連這個。(當然得使用其他方式),依據該IP,和一個未使用連接埠建立Socket->Listen()->Accept();
2.C根據S告訴的IP地址,串連。然後雙方就可以發送和接收文字了。
3.傳檔案的方式
(1)S->C:S點擊按鈕,然後通過傳文字的方法告訴C,我要給你發檔案了,然後建立傳檔案的Socket,Accept()等待C應答。C點擊按鈕,接收檔案,並給S發送文字訊息,然後串連S建立的Socket,(IP地址之前已經知道了,連接埠是寫死的),SAccept()到C,就Send檔案。具體如何發檔案,見下文。
(2)C->S:因為我覺得沒必要知道C的IP,所以還是S建立socket,當C告訴S我要發的時候,S建立,Accept,說”我準備好了“你發吧,然後C串連Connect(),傳送檔案,S接收。
傳送檔案這種校正方式還有待推敲,我也是第一次寫。。。。。大家多提建議和意見,我是按照QQ發檔案的思維想的。
4.發檔案,我採取設定緩衝區,迴圈發送的方法,這樣可以傳輸各種大小的檔案。
小白基於Csocket的區域網路聊天檔案傳輸軟體C/S模式