server client 端互傳檔案 |
答題得分者是:cashyy
|
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
我按照站上http://delphi.ktop.com.tw/topic.php?topic_id=25913,http://delphi.ktop.com.tw/topic.php?topic_id=25912的兩個範例,嘗試用bcb5來作,有些問題想請教各位大大
Question:
在server 端
1.Button1Click以及ServerSocket1ClientRead這兩部分作了什麼動作呢?
其中 "FILE-START","FILE-END","FILE-CONTINUE"有什麼函意嗎?
2.執行程式會發生"list index out of bounds(0) " 在client端
1.Button1Click以及ServerSocket1ClientRead這兩部分作了什麼動作呢?
其中 "FILE-START","FILE-END","FILE-CONTINUE"有什麼函意嗎?
2.執行程式會發生"Asynchronous socket error 10061"
第一次接觸網路程式,有很多地方不懂,所以想請大大們解惑^^" 祝:如意
|
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
我把code貼出來方便大大觀看
//----server 端 #include |
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
//------client 端 #include |
cashyy
高階會員 發表:117 回覆:322 積分:212 註冊:2004-04-30 發送簡訊給我 |
引言: 我按照站上http://delphi.ktop.com.tw/topic.php?topic_id=25913,http://delphi.ktop.com.tw/topic.php?topic_id=25912的兩個範例,嘗試用bcb5來作,有些問題想請教各位大大 Question: 在server 端 1.Button1Click以及ServerSocket1ClientRead這兩部分作了什麼動作呢? 其中 "FILE-START","FILE-END","FILE-CONTINUE"有什麼函意嗎? 2.執行程式會發生"list index out of bounds(0) " 在client端 1.Button1Click以及ServerSocket1ClientRead這兩部分作了什麼動作呢? 其中 "FILE-START","FILE-END","FILE-CONTINUE"有什麼函意嗎? 2.執行程式會發生"Asynchronous socket error 10061" 第一次接觸網路程式,有很多地方不懂,所以想請大大們解惑^^" 祝:如意您好! 1.Button1Click的動作:傳送封包到接收端! 2.ServerSocketClientRead的動作:收到傳送端的封包時,所做的判斷與處理! 3."FILE-START","FILE-END","FILE-CONTINUE"的函意:這意思是說,當我傳送第一個封包時,設定為"FILE-START"字串,然後傳送封包!在接收端收到之後,就可以用這個字串("FILE-START")來判斷是那一個封包! 例如: 傳送端,送出一個1。 接收端,收到一個1。 那接收端就知到這是第一個封包! 您也可以自己定義:如:a,b,c,當接收端收到a時要做什麼?,當收到b時要做什麼?............. ========================================================= 小弟重新舉例: 小弟將FILE-START","FILE-END","FILE-CONTINUE"這三個轉成中文,然後再解釋一次。 "FILE-START" =>第一個封包 "FILE-END" =>最後一個封包 "FILE-CONTINUE" =>中間的封包 if(接收第一個封包) { //接收第一個封包的處理 } else if(接收中間的封包) { //接收中間封包的處理 } else //(接收最後的封包) { //接收最後封包的處理 }FILE-START","FILE-END","FILE-CONTINUE" =>的意思就是要用來判斷是"第一個封包",還是"中間的封包",還是"最後一個封包" 發表人 - cashyy 於 2005/08/03 18:42:59 |
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
|
cimgg
一般會員 發表:21 回覆:30 積分:10 註冊:2005-05-10 發送簡訊給我 |
引言: 我按照站上http://delphi.ktop.com.tw/topic.php?topic_id=25913,http://delphi.ktop.com.tw/topic.php?topic_id=25912的兩個範例,嘗試用bcb5來作,有些問題想請教各位大大 Question: 在server 端 1.Button1Click以及ServerSocket1ClientRead這兩部分作了什麼動作呢? 其中 "FILE-START","FILE-END","FILE-CONTINUE"有什麼函意嗎? 2.執行程式會發生"list index out of bounds(0) " 在client端 1.Button1Click以及ServerSocket1ClientRead這兩部分作了什麼動作呢? 其中 "FILE-START","FILE-END","FILE-CONTINUE"有什麼函意嗎? 2.執行程式會發生"Asynchronous socket error 10061" 第一次接觸網路程式,有很多地方不懂,所以想請大大們解惑^^" 祝:如意我在電腦中運行這兩個程式也會出現這樣的錯誤,不曉得是什麽問題,有人可以回答嗎 授人玫瑰,手有余香 |
JAPTION
一般會員 發表:1 回覆:7 積分:1 註冊:2003-12-30 發送簡訊給我 |
|
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
引言: 在client端 2.執行程式會發生"Asynchronous socket error 10061" 第一次接觸網路程式,有很多地方不懂,所以想請大大們解惑^^" 祝:如意 就我所知這是因為你的SOCKET斷線了,但是卻還一直在傳送資料,所以你應該加一個判斷斷線時的處理。好像不是斷線問題,測試了一下,程式會跑到clientsocketerror然後停止了 並不會跑到clientsocketdisconnect這個地方 在程式中還有一些地方不懂想請問前輩們^^" Q1: 程式中下列這段 #define MAX_STRLEN 16 #define MAX_DATASIZE 1024 typedef struct _MyPack { char szHeader[MAX_STRLEN]; char szFileName[MAX_STRLEN]; DWORD dwPackTotal; DWORD dwPackCount; DWORD dwTotalDataSize; DWORD dwThisDataSize; BYTE pbThisData[MAX_DATASIZE]; } MYPACK;這是不是所謂的封包,一定要定義這些才能傳送檔案嗎? 這種定義是制式的嗎? Q2:下面兩段程式定義差別是? 1. gmsFile=new TMemoryStream; 2. TMemoryStream *msFile=new TMemoryStream; |
JAPTION
一般會員 發表:1 回覆:7 積分:1 註冊:2003-12-30 發送簡訊給我 |
引言:其實我之前也常發生這樣的狀況,你可以檢查一下是不是有那個地方你把socket server關掉了,但是client卻還在繼續傳,我看到網上有人在clientsocketerror 將errorcode = 0;好像可以讓這個訊息不出現,但是並不能真正解決這個問題,但如果你將errorcode = 0;後再重建socket看看是不是可行。 還有你試一下在clientsocketdisconnect、clientsocketerror、clientsocketconnect都做一個出輸訊息就可以知道是不是斷線了。 MYPACK只是定義要互傳檔案的資料內容而己,其實並不是那麼須要的。引言: 在client端 2.執行程式會發生"Asynchronous socket error 10061" 第一次接觸網路程式,有很多地方不懂,所以想請大大們解惑^^" 祝:如意 就我所知這是因為你的SOCKET斷線了,但是卻還一直在傳送資料,所以你應該加一個判斷斷線時的處理。好像不是斷線問題,測試了一下,程式會跑到clientsocketerror然後停止了 並不會跑到clientsocketdisconnect這個地方 在程式中還有一些地方不懂想請問前輩們^^" Q1: 程式中下列這段#define MAX_STRLEN 16 #define MAX_DATASIZE 1024 typedef struct _MyPack { char szHeader[MAX_STRLEN]; char szFileName[MAX_STRLEN]; DWORD dwPackTotal; DWORD dwPackCount; DWORD dwTotalDataSize; DWORD dwThisDataSize; BYTE pbThisData[MAX_DATASIZE]; } MYPACK;這是不是所謂的封包,一定要定義這些才能傳送檔案嗎? 這種定義是制式的嗎? Q2:下面兩段程式定義差別是? 1. gmsFile=new TMemoryStream; 2. TMemoryStream *msFile=new TMemoryStream; |
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
引言: 其實我之前也常發生這樣的狀況,你可以檢查一下是不是有那個地方你把socket server關掉了,但是client卻還在繼續傳,我看到網上有人在clientsocketerror 將errorcode = 0;好像可以讓這個訊息不出現,但是並不能真正解決這個問題,但如果你將errorcode = 0;後再重建socket看看是不是可行。 還有你試一下在clientsocketdisconnect、clientsocketerror、clientsocketconnect都做一個出輸訊息就可以知道是不是斷線了。 MYPACK只定義要互傳檔案的資料內容而己,其實並不是那麼須要的。意思是說MYPACK可以刪掉囉,如果刪掉的話,那 ServerSocket1->Socket->Connections[0]->SendBuf(&mp, sizeof(MYPACK)) 這個地方要如何改寫才可以達到傳檔的功能? |
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
引言: 意思是說MYPACK可以刪掉囉,如果刪掉的話,那 ServerSocket1->Socket->Connections[0]->SendBuf(&mp, sizeof(MYPACK)) 這個地方要如何改寫才可以達到傳檔的功能?傳檔的話就我所知是不能用sendstring的,收檔會有問題(char *跟string之間的問題) 不一定要用mypake這個strcut啦 下面有我之前寫的傳檔,裡面就沒有用到struct,你可以參考看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=77282 另外,我有遇到一個錯誤訊息"Asynchronous socket error 10053" 是在我server client連線建立後傳第一個封包的時後出現的(client -> server), 用seniffer看client端跟本沒送出封包,防火牆也沒開 這..是什麼情況丫??>"< |
JAPTION
一般會員 發表:1 回覆:7 積分:1 註冊:2003-12-30 發送簡訊給我 |
引言:http://delphi.ktop.com.tw/topic.php?topic_id=30956 你可以看看大大們整理出來的error說明哦!引言: 意思是說MYPACK可以刪掉囉,如果刪掉的話,那 ServerSocket1->Socket->Connections[0]->SendBuf(&mp, sizeof(MYPACK)) 這個地方要如何改寫才可以達到傳檔的功能?傳檔的話就我所知是不能用sendstring的,收檔會有問題(char *跟string之間的問題) 不一定要用mypake這個strcut啦 下面有我之前寫的傳檔,裡面就沒有用到struct,你可以參考看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=77282 另外,我有遇到一個錯誤訊息"Asynchronous socket error 10053" 是在我server client連線建立後傳第一個封包的時後出現的(client -> server), 用seniffer看client端跟本沒送出封包,防火牆也沒開 這..是什麼情況丫??>"< |
japplet2001
一般會員 發表:2 回覆:1 積分:0 註冊:2005-09-14 發送簡訊給我 |
|
wasisrk
一般會員 發表:6 回覆:9 積分:3 註冊:2005-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |