tcp/udp 協議tcp協議和udp協議的區別類似於**系統和郵政系統。
<1>tcp:類似於**系統,建立雙向的通訊通道,確定連線,話音順序接聽。
<2>udp:類似於郵政系統,傳送方將信件傳送到正確的位址,但並不知道準確的郵路,大多數郵件到達了目的地,個別情況一些郵件會在路上丟失。郵件不保證順序到達目的地。
socket
客戶端的通訊套接字,可指定遠端ip位址、埠進行連線通訊,也可以通過方法獲取已連線的socket的遠端ip位址、埠,以及將此socket以位元組輸入流和輸出流的形式返回,當與資料輸入流和輸出流繫結,便可實現客戶端的網路通訊。
建構函式均為public修飾型別,如果建立socket時發生i/o錯誤,均丟擲ioexception異常。常用建構函式如下:
socket(inetaddress address,int port):建立乙個socket並與規定的ip位址的指定的埠相連線。
socket(string host,int port):建立乙個socket並與指定主機的指定埠連線。
serversocket
伺服器的通訊套接字,用來偵聽客戶端請求的連線,並為每個新連線建立乙個socket物件,由此建立繫結此socket的輸入流和輸出流,與客戶端實現網路通訊。
建構函式均為public修飾型別,如果建立socket時發生i/o錯誤,均丟擲ioexception異常。常用建構函式如下:
serversocket(int port):在所給定的用來偵聽的埠上建立乙個伺服器套接字。如果埠號為0,則在任意的空閒的埠上建立要給伺服器套接字。外來連線請求的數量預設最大為50。
服務端cilent
建立serversocket並監聽設定的埠,呼叫accpet()方法,直到找到對應的socket與之連線,建立乙個執行緒為止服務。
public多執行緒客戶端cilentclass
servercilent
} catch
(exception e)
}class w_thread extends
thread
public
void
run()
} catch
(exception e) }}
/**
*/public
static
void
main(string args)
catch
(exception e)
}});
}/**
*/public
servercilent()
/*** initialize the contents of the frame.
*/private
void
initialize()
});btnlistenstart.setbounds(254, 21, 136, 23);
panel.add(btnlistenstart);
label.setbounds(10, 298, 82, 15);
frmserver.getcontentpane().add(label);
lblnewlabel = new
jlabel(string.valueof(socketarr.size()));
lblnewlabel.setbounds(75, 298, 54, 15);
frmserver.getcontentpane().add(lblnewlabel);
btnrefresh = new jbutton("refresh");
btnrefresh.setbounds(331, 298, 93, 23);
frmserver.getcontentpane().add(btnrefresh);}}
建立socket,並獲取對應的輸入輸出流即可。
publicsocket管理類class cilent implements
runnable
catch
(exception e) }}
public
void create_socket(inetaddress ip,int
port)
catch
(exception e)
}/**
*/public
static
void
main(string args)
catch
(exception e)
}});
}/**
*/public
cilent()
/*** initialize the contents of the frame.
*/private
void
initialize()
catch
(exception e)
}});
sumbit.setbounds(272, 16, 142, 23);
panel.add(sumbit);
showarea = new
jtextarea();
showarea.setbounds(10, 104, 424, 358);
frmlogincilent.getcontentpane().add(showarea);
sendinfo = new
jtextfield();
sendinfo.setbounds(10, 472, 330, 21);
frmlogincilent.getcontentpane().add(sendinfo);
sendinfo.setcolumns(10);
send = new jbutton("send");
send.addmouselistener(
newmouseadapter()
});send.setbounds(349, 471, 85, 23);
frmlogincilent.getcontentpane().add(send);}}
繼承arraylist,並新增傳送的方法sendtoall(),以及顯示當前連線數目的方法sendcilentinfo()
public示例效果:class socketmanager extends
arraylist
synchronized
void
remove(socket x)
synchronized
void
sendtoall(string str)
} catch
(exception e) }}
synchronized
void
sendclientinfo()
}
陣列的概念及例項
陣列的概念及例項 一 什麼是陣列?應該如何宣告。陣列是記憶體中一片連續的儲存空間。宣告陣列有兩種方式 1 通過字面量的方式宣告陣列 例 var a 10,20,30,40,50,60 宣告乙個陣列,該陣列的名稱為a,該陣列共有6個陣列元素。2 通過陣列的 建構函式 宣告陣列 var b new ar...
串列埠通訊的概念及介面電路
串列埠通訊的概念及介面電路 來自中國工控網 隨著計算機系統的應用和微機網路的發展,通訊功能越來越顯的重要。這裡所說的通訊是只計算機與外界的資訊交換。因此,通訊既包括計算機與外部裝置之間,也包括計算機和計算機之間的資訊交換。由於序列通訊是在一根傳輸線上一位一位的傳送資訊,所用的傳輸線少,並且可以借助現...
python模組內建屬性概念及例項
我們在講模組的時候,有些人看到了內建屬性,就把它們當做函式,其實還是有區別的,這裡需要為大家進行明確。我們所看到的函式兩邊帶有雙下劃線,這是python模組中內建屬性的體現。下面我們就內建屬性進性說明,並列出幾種內建屬性的方法,最後帶來例項供大家體會。一種匯入的方法,可以使用 import 直接把模...