802.16 IP Telephony Lab會議紀錄 時間:95年12月4日19:30 地點:暨南大學科四館418教室 主講人:林穎舜 紀錄:王鐘逸 出席者:吳坤熹老師、林穎舜、王彥翔、吳菖育、施賢孝、張文萍、張兢真、王鐘逸、陳柏州 會議主題:RTP Library(林穎舜) 會議內容: 一. RTP Library 1. Sample program:Rtp_Example_Receiver 問題討論: 1.RTP lib Q1.投影片中第5頁的FD_SET(...)部分的說明"from"是否應該是"to"? (老師提問) Ans:FD_SET and FD_CLR add or remove a given descriptor "from" a set。 (穎舜回答) 查找manpage之後,FD_SET() 應該是 add a given descriptor "to" a set。 (老師補充) Q2.投影片中第5頁,add和remove都是原形,但tests卻不是test;動詞形態希望一致,統一化投影片格式。 (老師建議) Q3.select中提到的file descriptor代表的是什麼?一個socket?還是一筆資料? (老師提問) Ans:是一筆輸入。 (穎舜回答) Q4.file descriptor多大? (老師提問) Ans:將demo程式(Rtp_Example_Receiver.c)作修改,使用printf("%d\n", sizeof(sev->fd))檢查之後,得到大小為4bytes。 (穎舜回答) Q5.在debug程式時,怎麼修改程式會比較好? (老師建議) 1.在輸出(printf("...") )時,最後面加入換行(\n)的符號。 2.在輸出(printf("...") )時,前面加入"DEBUG"之類的字串,以便於搜尋時找到,還有取代前面字串時也比較方便;好比說加入//的註解符號。 Q6.請大家在vi編輯器下養成使用search的功能(/xxx);搜尋的動作交給電腦,而不是由人工進行。 (老師建議) Q7.編輯vi時,不離開vi且開啟2個檔案的方法?且已經成功開啟,如何切換? (老師提問) Ans:開啟時用 :e filename 切換時用 Ctrl+6 (老師解說) Q8.編輯vi時,如何複製游標該段以及貼上該段? (老師提問) Ans:複製時用 yy 貼上時用 p (老師解說) Q9.編輯vi時,如何標記游標該行? (老師提問) Ans:mx,"x"可以是a~z的英文字母,也就是共有26組記憶。切換時,按 'x。 (老師解說) Q10.盡力reuse(於講解程式部分時);不然所有東西重頭來過,就必須經歷所有的錯誤;善用工具,縮短工作的時間,是很重要的。 (老師建議) Q11.在穎舜嘗試刪除程序19913時,為什麼會不存在? (老師提問) Ans:因為該程式已經錯誤,也就是不正常結束;所以不會有job存在。 (老師解說) Q12.執行時最後加上 & 的意思?且如何將執行結果送到檔案之中? (老師提問) Ans:& 是背景執行的意思,使用者仍究可以繼續使用console執行;而剛剛的程式則是在背景執行。 至於輸出存入檔案中,可以使用 ./xxx > outfile & (背景執行) (老師解說) Q13.執行jobs查詢所出現的輸出,意義是什麼? (老師提問) [job number] 'process id' (老師解說) Q14.如何中斷前景執行動作;且如何清乾淨目前console畫面? (老師提問) Ans:跳出:Ctrl+c 更新:Ctrl+l (老師解說) Q15.如果輸入檔案時,程式要求輸入會發生什麼事情? (老師提問) Ans:程式等待,因為要求使用者輸入。 (穎舜回答) Q16.是否有辦法在vi編輯器內,遇到特殊字串"DEBUG"時,在該行最前面加上//;並且,反過來,可以將該行前面已經打上//的 行數,取消其前方//符號? (老師提問) Ans:1.加上//: %s:\(.*DEBUG\):// \1: :是指分隔符號;\( \)是因為'('和')'是特殊符號,前面必須加上\;最後面的 \1則是代表前面 (XXX) 內的字串。 ================================================================================ %s     :   \(.*DEBUG\)  :    //  \1      : 取代指令 分隔符號 regular express 取代符號 match 的字串 結尾的分隔符號 ================================================================================ 2.取消//是使用: %s:^// \(.*DEBUG\):\1: (老師+菖育解說) Q17.如果不使用'('和')'呢? (柏州提問) Ans:就不能使用先前所代表的字串,就是指\1的部份。 (老師回答) Q18.有沒有取代的簡單作法? (老師提問) Ans:%s:printf("DEBUG:// printf("DEBUG: 但是,如果有空白或者是TAB鍵時,就會無法成功。 (老師解說) Q19.什麼時候select會-1? (老師提問) Ans:socket格式錯誤時。 (穎舜回答) Q20.us_event看似僅有一個檔案傳送,且沒有多工;為什麼需要select? (老師提問) Ans:socket是阻斷式的I/O,如果接受才會進行接收;如果使用select就算第一個失敗,仍然會繼續執行。 (穎舜回答) Q21.使用select的差別? (老師提問) Ans:不使用select會比較慢;如果做多個socket傳送,就會比較快。 (穎舜回答) Q22.程式傳送快慢對於即時音訊的傳送似乎沒有意義,因為傳輸率是一定的,是否考慮簡化此程式? (老師提問) Ans:總之這個部份對於穎舜是較次要的部份;要簡化,但是也要往下繼續進行。 (老師建議) 散會: 結束時間:22:00