做了一個雲端投影的應用,弄了許久,終於搞定,這只是為了自己好玩開發出來的。也在網路程式上重新在上了一課,以前老是用高階的程式語言,開發的時候輕鬆許多,但很多時候也有許多限制,必須重新檢視網路的能力,再重新把Richard Steven的書翻出來,有了更深刻的體會,以前一些隱晦不明的地方,隨著對系統的了解也有比較深入的認知
比方以前很少去動到的socket option的設定,這次也用到了,因為在報告過程之中,一個socket可能會保留很久,預設的timeout時間太短了
setsockopt (sockfd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout,sizeof(timeout))
另外很多高階的程式語言其實無法很貼近系統,對於一些IPC的操作之類顯得比較無法做細部的調整,畢竟高階語言大多要跨平台,只能就共同的特性做對應
最後就是有些陷阱的部分,比方說使用24bits顯示模式,用程式抓下來的圖片最多不會超過24bits(很多人心裡應該會這樣默認吧),很可惜有些程式很好心的幫我們轉成了32bits,結果在解析圖片過程就可能造成錯誤
也遇到了一個無法解決的問題,那就是開發過程中因為程式的不正確讓connection若入的LAST_ACK的模式,但是client一直沒有反應,這時候即使把server的process殺了,port #還是會被綁住5~6mins之久,而且我也沒有找到解決方式,網路上大多釋放port #的方式是使用kill process的方式,對這個問題是沒有幫助的
沒有留言:
張貼留言