網(wǎng)絡(luò)編程
1.網(wǎng)絡(luò)概念
把多臺(tái)計(jì)算機(jī)通過(guò)物理 線路連接起來(lái)秀撇,就形成了網(wǎng)絡(luò)? 超棺,目的在于 交換數(shù)據(jù)和共享信息
2.網(wǎng)絡(luò)通信三要素
1.ip地址:唯一標(biāo)識(shí)網(wǎng)絡(luò)上的每一臺(tái)計(jì)算機(jī),兩臺(tái)計(jì)算機(jī)之間通信的必備要素
2.端口號(hào):計(jì)算機(jī)中應(yīng)用的標(biāo)識(shí)(代表一個(gè)應(yīng)用程序)0-1024系統(tǒng)所使用的端口號(hào)呵燕,有效端口1025-65536棠绘,開(kāi)發(fā)者可以使用的,一些第三方引用的如mysql:3306再扭;Oracle:1251
3.通信協(xié)議:通信規(guī)則1.tcp氧苍,2.udp
3.網(wǎng)絡(luò)通信模型
特殊抽ip:0.0.0.0:本機(jī);127.0.0.1:本機(jī)回環(huán)地址泛范,用于本機(jī)測(cè)試让虐;255.255.255.255:當(dāng)前子網(wǎng),一般用于向當(dāng)前子網(wǎng)廣播信息罢荡。
4.inetaddress
表示ip地址
public?class?Test01 {
public?static?void?main(String[] args) {
//獲取本機(jī)IP地址
InetAddress ip1;
try?{
ip1?= InetAddress.getLocalHost();
// USER-20180113BT/192.168.2.56
System.out.println(ip1.toString());
//獲取主機(jī)名稱
System.out.println(ip1.getHostName());
System.out.println(ip1.getHostAddress());
} catch?(UnknownHostException e) {
e.printStackTrace();
5.TCP編程
TCP編程中赡突,如果要完成通信,通信雙方必須要?jiǎng)?chuàng)建socket区赵,通過(guò)socket完成通信惭缰。
TCP通信步驟:1.服務(wù)器啟動(dòng)serversocket作為通信的server端,等待客戶端鏈入笼才;2.客戶端創(chuàng)建socket作為通信的client端漱受;3.client端鏈入server端后建立可靠地,雙向的患整,持續(xù)性的點(diǎn)對(duì)點(diǎn)的通訊連接拜效,即可通信喷众。
6.常用問(wèn)題
1.端口被占用:
java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at cn.sxt01.net02.Server01.main(Server01.java:19)
2.服務(wù)器未啟動(dòng):
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at cn.sxt02.net02.Client01.main(Client01.java:15)
3.連接超時(shí)異常:sockettimeoutexception;當(dāng)網(wǎng)速很慢紧憾,可能會(huì)發(fā)生連接超時(shí)異常到千。