關於套接字的一點學習

2021-06-06 19:41:31 字數 1021 閱讀 9182

這幾天寫程式的中心點是socket,因為手上的乙個專案在這一塊出了些問題。問題在於我寫的程式向夥伴寫的程式傳送資料,他的程式未能正確接收到我傳送的資料。原以為套接字程式設計就是簡簡單單地幾個socket庫函式的使用而已,但現實的問題卻總在提醒我,「哥們,你還太天真了!」。痛定思痛,有了以下幾點新的認識。

1.流資料的讀寫,不是一次完成的(如果資料比較大),而是可能分成好幾讀到的。這個就像是網路中傳送資料報一樣,如果資料報太大,在傳送之前會先對其分片,然後一片一片第傳送出去。

2.套接字緩衝區大小可根據需要自行設定。套接字傳送資料的過程中,資料是先從資料buffer複製到套接字的傳送緩衝區,然後再把傳送緩衝區的資料傳送出去;而接收資料的過程,則是將收到的資料放到套接字的接收緩衝區中,然後讀取到使用者程式的緩衝區中。因而,如果資料量比較大的情況,需要自行將套接字緩衝區設的大一點。以下寫了幾個操作套接字緩衝區大小的函式。

/* 獲取傳送緩衝區大小 */

int getsndbufsize(int sock)

return snd_size;

}/* 獲取接收緩衝區大小 */

int getrcvbufsize(int sock)

return rcv_size;

}/* 設定傳送緩衝區大小 */

void setsndbufsize(int sock, int set_size)

printf("set snd buff size success\n");

printf("snd buff size = %d\n", getsndbufsize(sock));

return ;

}/* 設定接收緩衝區大小 */

void setrcvbufsize(int sock, int set_size)

printf("set rcv buff size success\n");

printf("rcv buff size = %d\n", getrcvbufsize(sock));

return ;

}

關於學習的一點體會

從小到大,經歷過很多的學習,有專業知識的學習,有生活技能的學習,有興趣愛好的學習,但是直到目前為止,沒有在任何乙個方面能夠在身邊的同學和朋友中脫穎而出。每每想到這樣的問題一直伴隨自己經歷了這麼久,便陷入深深自責。今天決定寫一篇部落格,來反省一番,希望能給自己以後的發展提供一些幫助。分析學習一項技能無...

關於學習的一點想法

上了十幾年學,才發現自己很多本質的問題從來沒有想過。人類在發展過程中會遇到各種各樣的問題,面對各種各樣的問題,人們提出了各種解決方法。但是如果不用文字記錄下來,讓更多的人看到,實現知識的傳播,那麼未來的人類面對相同的問題就會一臉懵逼,然後花很多重複時間解決乙個解決過的問題。所以人類把各種問題的解決方...

關於學習的一點思考

最近發現有很多需要學習的東西,但是時間是有限的,如何更有效率的學習成了我思考的問題。scott h young用了12個月,通過網際網路完成了四年麻省理工大學33門的計算機課程,無疑他的一些分享可以帶來一些啟發。深入學習的第一步是對要學習的內容有個大致印象,可能需要多讀幾本同主題的書,相互考證。這個...