UDP要注意的地方

2021-07-04 16:44:38 字數 927 閱讀 4823

1.udp伺服器大多數都是迭代伺服器。

2,沒有流量控制,可以很容易的讓接收端緩衝區溢位

3.其沒有傳送緩衝區,但是乙個套接字公用乙個接收緩衝區(來自不同端的訊息都放在這個緩衝區中。

4,可以傳送0位元組長度的資料,接收0自己長度的資料。並不像tcp套接字上read返回0值,表示對端已關閉。因為其是無連線的,所以也就沒有諸如關閉乙個udp套接字之類的事情。

5.為了防止由於丟包而引起的阻塞,可以為recvfrom呼叫設定超時。

6.在迭代伺服器中,通過讀取recvfrom返回的對端套接字描述符來驗證是否接收到特定埠的響應。

7.在對乙個伺服器端沒有相應程序的伺服器傳送udp資料報時,我們的sendto操作可以很成功的返回,因為從udp輸出操作成功返回僅僅表示在介面輸出佇列中具有存放所形成的ip資料報的空間。而該icmp的埠不可達錯誤直到(4ms)之後才返回。所以稱這種錯誤為非同步錯誤。對於乙個udp套接字,由他引起的非同步錯誤並不返回給他,除非他已經鏈結。主要是因為我們可以通過乙個套接字向不同的對端傳送資料報,所以當乙個錯誤產生時,即使核心直到相應的目的端ip和埠,但是也傳不到客戶端程序,因為返回錯誤只能通過error變數設定,但是error變數是由特定用途的,不能用於傳回ip和埠。所以只有在一對一的connect情況下才返回給客戶端程序。

8.當呼叫connect操作以後,我們就不能給輸出操作指定目的ip和埠。寫到已連線udp套接字上的任何內容都自動傳送到由connect指定的協議上。

在乙個已連線udp套接字上接收到的包也是經過過濾的。

由已連線udp套接字引發的非同步錯誤會返回給他們所在的程序,而未連線的udp套接字不接收任何非同步錯誤。

9.呼叫connect操作的通常是udp客戶。

10.udp套接字接收緩衝區可以通過so_rrcvbuf設定。setsockopt(sockfd,sol_socket.so_rcvbuf,&n,sizeof(n));

ITextField要注意 的地方

textfield uitextfield alloc initwithframe cgrectmake 100,14,205,20 textfield.placeholder input sms filter content textfield.font uifont systemfontofsi...

textFiled要注意的地方

原帖 textfield uitextfield alloc initwithframe cgrectmake 100,14,205,20 textfield.placeholder input sms filter content textfield.font uifont systemfonto...

Toast要注意的地方

乙個小demo,無意間,在子執行緒中toast了一把,竟然報錯了 因為toast在service和activity中都可以執行。所以開始就認為和ui執行緒沒有有太大的關係,而現在子執行緒toast竟然報錯!無奈之下,花了半天的時間看了一下handler,looper,toast的原始碼,終於搞定了。...