1. 程式人生 > >關於SOCKET程式設計中“燙燙燙...”的問題

關於SOCKET程式設計中“燙燙燙...”的問題

近幾日一直在學習SOCKET通訊,關於網路程式設計這塊兒一是空白。學習的過程中在網上找了一段原始碼,據說是孫鑫老師教程裡的。新建一個工程,執行原始碼一切似乎很正常。於是自己改了一下程式,再次執行發現客戶端第一次接收到資料時一直顯示”燙燙燙“的亂碼。經過網上查詢資料,多次測試,發現有以下幾種原因:
1、檢查客戶端與伺服器端的埠是否一致。埠不一致時伺服器端可能出錯
2、檢查程式邏輯。我就翻了這種不能再傻逼的錯誤。把程式改成了這樣

SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
char sendBuf[100
]; send(sockConn, sendBuf, strlen(sendBuf) + 1, 0); char recvBuf[100]; recv(sockConn, recvBuf, 100, 0); printf("%s\n", recvBuf); sprintf(sendBuf, "Welcome %s to http://www.sunxin.org", inet_ntoa(addrClient.sin_addr)); closesocket(sockConn);

由於傳送緩衝區剛傳送前沒有資料,所以客戶端接收到的為null,於是就顯示“燙燙燙“
只需要把

sprintf(sendBuf, "Welcome %s
to my site"
, inet_ntoa(addrClient.sin_addr));

移到send函式之前,問題即解決。
3、網上很多人說是由於緩衝區未初始化,檢測不到結束符,導致訪問越界。但是我在對緩衝區都初始化後,問題仍然沒有解決。
4、電腦可能真的太“燙”了。哈哈哈