[問題] winsock recv()

看板C_and_CPP (C/C++)作者 (阿伯)時間14年前 (2012/04/27 11:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) windows 7 devc++ 4.9.9.2 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 寫一個socket程式連上用filezila server 架的FTP recv()接收歡迎訊息後資料的迴圈部分會無法跳出 預期的正確結果(Expected Output): recv()接收完資料後跳離迴圈 往下執行 程式碼(Code):(請善用置底文網頁, 記得排版) ...... connect(sockfd, (SOCKADDR*)&servaddr, sizeof(servaddr)); do { rev_len = recv(sockfd, recvbuf, sizeof(recvbuf), 0); if ( rev_len > 0 ){ printf("%s",recvbuf); memset(recvbuf, 0, sizeof(recvbuf));//清空buffer的內容 }else if ( rev_len == 0 ){ printf("Connection closed\n"); break; }else{ printf("recv failed: %d\n", WSAGetLastError()); break; } } while( rev_len > 0 ); printf("Hello??\n"); ... 補充說明(Supplement): 可以很順利地收到歡迎訊息 220-FileZilla Server version 0.9.41 beta 220-written by Tim Kosse (Tim.Kosse@gmx.de) 220 Please visit http://sourceforge.net/projects/filezilla/ 就不會再動了... 試過不用迴圈recv 只收一次 是可以往下執行 但訊息會沒收完 而且每次斷的長度也不一樣 因為是以前寫的程式(在XP上) 我很確定他曾經可以WORK= = 有想過用 MSG_WAITALL flag 但編輯器說這個參數undefined 請版上大大幫忙看哪出了問題 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.104.75
文章代碼(AID): #1FcXL4Kp (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FcXL4Kp (C_and_CPP)