導航:首頁 > 網路設置 > java網路編程需要設置什麼參數

java網路編程需要設置什麼參數

發布時間:2022-10-29 16:45:04

A. Java網路編程如何初始化套接字

不同的構造方法不僅帶的參數不同,所具有的意義也不一樣。下面分別解析這兩個類的實例初始化過程。 ServerSocket 實例的初始化 ServerSocket 類提供了四個構造器: public Socket(String host, int port) throws UnknownHostException, IOException public Socket(InetAddress address, int port) throws IOException public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException public Socket() public Socket(Proxy proxy) 帶參構造器用來創建已綁定的伺服器套接字,也就是說構造成功後它就已經開始偵聽指定的埠,且能夠調用 accept() 方法來接受客戶端連接。默認構造器則會創建未綁定的伺服器套接字,構造成功後必須手動將其綁定到一個本地地址才能用,在綁定之前可以進行一些選項配置。 帶參構造器 總的來說,帶參構造器提供了三個參數: port 指定該伺服器套接字所要偵聽的本地埠。如果為 0,則由系統自動分配一個埠號,這必須以另外的方式讓客戶端獲取埠號。 backlog 這個名詞目前還沒有合適的譯名。底層系統的 TCP 實現會維護一個連接隊列,該隊列緩存了已被 TCP 處理完畢,但還沒有被伺服器套接字接受的客戶端連接。一旦某個連接被接受(通過調用 accept() 方法),它就會被從隊列中移除。backlog 參數就用於指定隊列的最大長度,默認值為 50,但這個值只是一個建議,底層系統可能根據需要自動調整。如果隊列滿了,則其行為是平台相關的:微軟的 WINSOCK 會拒絕新的連接,其他實現則什麼都不做。嚴格地說,微軟沒有遵守規范,破壞了游戲規則…… bindAddr 一台機器可能會有多個本地 IP 地址,例如同時使用多塊網卡。使用其他兩個帶參構造器時,該參數為 null,伺服器套接字會在所有的本地 IP 地址(0.0.0.0 或 ::0)上偵聽。如果希望只偵聽一個地址,則可使用該參數。 默認構造器 如果使用默認構造器,在綁定地址前,還可以做些配置。綁定操作由兩個 bind 方法定義,參數類似於帶參構造器。配置項包括以下方面(都必須在綁定前配置): 設置是否重用本地地址 該選項由 setReuseAddress(boolean on) 方法配置,對應底層系統的 SO_REUSEADDR 套接字選項。JDK 沒有定義該選項的默認值。如果該選項為 false,則在關閉 TCP 連接時,為了保證可靠性,該連接可能在關閉後的一段時間(大約兩分鍾)內保持超時狀態(通常稱為 TIME_WAIT 狀態或 2MSL 等待狀態),這段時間里無法將新建的伺服器套接字綁定到同一個地址。在開發階段,伺服器可能不斷重啟,打開改選項會非常有用。 設置接收緩沖區大小 該選項由 setReceiveBufferSize(int size) 方法配置,對應底層系統的 SO_RCVBUF 套接字選項,單位是位元組。《RFC 1323 - TCP Extensions for High Performance》將緩沖區大小定義為 64KB。該選項只是一個建議值,底層系統可能根據需要自行調整。 設置超時值 該選項由 setSoTimeout(int timeout) 方法配置,對應底層系統的 SO_TIMEOUT 套接字選項,單位是毫秒。默認值為 0。該選項影響 accept 方法的阻塞時間長度,如果超時將引發 SocketTimeoutException。如果設為 0,則表示永不超時。 設置性能首選項 性能首選項包括連接時間、延遲和帶寬三個選項,由 setPerformancePreferences(int connectionTime, int latency, int bandwidth) 方法配置。這三個數值分別表示短連接時間、低延遲和高帶寬的相對重要性,數值越大則越重要;其各自的絕對值沒有意義。該方法的初衷是為了讓 Java 能在用非 TCP/IP 實現的套接字環境下工作得更好,某些需要對網路進行調優的程序也可以將這三個首選項作為配置參數提供給用戶。 Socket 實例的初始化 Socket 類提供了六個公共構造器(已過時的除外): public Socket(String host, int port) throws UnknownHostException, IOException public Socket(InetAddress address, int port) throws IOException public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException public Socket() public Socket(Proxy proxy) 前四個構造器創建已連接的客戶端套接字,也就是說構造的時候就會去連接伺服器。前兩個構造器需要提供伺服器的地址和埠作為參數,本地地址和埠由系統自動分配;後兩個允許手動指定本地地址和埠,但極少使用。後兩個構造器創建未連接的套接字,創建後需要調用 connect 方法手動連接,連接之前可以做一些配置。最後一個構造器接受一個代表代理服務其的 Proxy 對象,JDK 支持 HTTP 和 SOCKS(V4 或 V5)兩種代理類型。 連接前的配置 在連接前,客戶端套接字不僅像伺服器套接字那樣可以設置是否重用本地地址、緩沖區大小、超時值和性能首選項,還能夠配置以下各項(都必須在連接前配置): 設置是否保持活躍 該選項由 setKeepAlive(boolean on) 方法配置,對應底層系統的 SO_KEEPALIVE 套接字選項。默認值為 false。如果打開該選項,則套接字會定期自動發送保持活躍的探測性消息,類似於心跳檢測。根據《RFC 1122 - Requirements for Internet Hosts》的規定,保持活躍機制只是 TCP 的一個可選功能,如果支持的話,默認必須為 false,而且這種機制默認在成功建立連接後,且連續兩小時沒有數據傳輸的情況下才會被激活。從另一方面來看,通過套接字的 I/O 操作完全可以知道連接是否還有效,所以該選項的實用價值不大。 設置是否收發帶外數據 該選項由 setOOBInline(boolean on) 方法配置,對應底層系統的 SO_OOBINLINE 套接字選項。默認值為 off。帶外數據(Out-of-band Data)也叫做緊急數據,表示數據很重要,需要使用不同於發送普通數據的一個專用通道來發送。打開該選項後,就可以調用 sendUrgentData(int data) 方法發送一個位元組的緊急數據。JDK 對帶外數據只提供了有限支持,緊急數據將會和普通數據一起被收到,並且無法自動區分。該選項對應用開發人員意義不大。 設置是否從容關閉連接 該選項由 setSoLinger(boolean on, int linger) 方法配置,對應底層系統的 SO_LINGER 套接字選項。默認為 false。該選項只會影響套接字的關閉,其中的 linger 參數表示超時時間,單位為秒。如果打開改選項:如果將 linger 設為 0,則關閉套接字的時候,未發送的數據會被丟棄,且另一端會出現連接被同位體重置的異常;如果 linger 非 0,則關閉套接字的線程將被阻塞,直到數據全部發送或超時,超時後的行為與底層系統相關,JDK 無法控制。如果關閉該選項,則套接字正常關閉,數據也會全部發送。由於底層實現的差異性,不提倡應用開發人員打開該選項。 設置是否延遲發送數據 該選項由 setTcpNoDelay(boolean on) 方法配置,對應底層系統的 TCP_NODELAY TCP 選項。默認值為 off。打開該選項將禁用 Nagle 演算法,TCP 包會立即發送;關閉該選項則會啟用 Nagle 演算法,多個較小的 TCP 包會被組合成一個大包一起發送,雖然發送延遲了,但有利於避免網路擁塞。默認為 false。該選項對實時性很強的程序可能有用,但一般的程序不需要關心。 設置流量類別 該選項由 setTrafficClass(int tc) 方法配置,對應底層系統的「流量類別」套接字屬性。該選項用於向網路(例如路由器)提示從該套接字發送的包需要獲取哪些服務類型,對本地 TCP 協議棧沒有影響。IPv4 和 IPv6 分別定義了多個不同的值,例如 IPv4 將 0x08 定義為最大吞吐量,0x10 定義為最小延遲,等等。可以用或運算將多個值合並為一個選項。該選項用來調整性能,需要根據實際情況設置。由於只是建議值,可能被網路忽略。

B. Java網路編程基本概念是什麼

1、Java網路編程基本概念——主機的網路層


主機網路層定義特定網路介面(如乙太網或WiFi天線)如何通過物理連接將IP數據報發送到本地網路或世界其他地方。在主機網路層中,連接不同計算機的硬體部分(電纜、光纖、無線電波或煙霧信號)有時被稱為網路的物理層。Java程序員不需要擔心這一層,除非出現錯誤,例如計算機後面的插頭脫落或有人切斷了您與外部世界之間的T-1線。換句話說,Java將永遠看不到物理層。


2、Java網路編程基本概念——網路層


Internet層的下一層是主機網路層,這是Java程序員需要考慮的第一層。網際網路層協議定義了數據位和位元組如何組織成更大的組,稱為包,也定義了不同計算機互相查找的定址機制。Internet Protocol (IP)是世界上使用最廣泛的Internet層協議,也是Java唯一了解的Internet層協議。


網際網路協議基本上是兩種協議:IPV4使用32位地址,IPV6使用128位地址,並增加了技術特性來幫助路由。這是兩種完全不同的網路協議,如果沒有特殊的網關/隧道協議,它們甚至不能在同一網路上互操作,但是Java向您隱藏了幾乎所有這些差異。


除了路由和定址之外,網際網路層的第二個作用是使不同類型的主機網路層能夠彼此對話。網際網路路由器在WiFi和乙太網、乙太網和DSL、DSL和光纖往返協議之間進行交換。沒有網際網路層或類似的分層,每台計算機只能與同一類型網路上的其他計算機通信。網際網路層負責使用適當的協議將異類網路彼此連接起來。


3、Java網路編程基本概念——傳輸層


原始數據報有一些缺點。最明顯的缺點是無法保證可靠的傳輸,即使可以保證,也可能在傳輸過程中被損壞。頭檢查只能檢測頭中的損壞,而不能檢測數據報的數據部分。最後,即使數據報沒有損壞地到達了它的目的地,它也可能不能按照發送的順序到達。


傳輸層負責確保按發送的順序接收數據包,確保沒有數據丟失或銷毀。如果數據包丟失,傳輸層要求發送方重新傳輸該數據包。為此,IP網路向每個數據報添加了一個額外的頭,其中包含更多信息。


這個級別有兩個主要協議。第一個是傳輸控制協議(TCP),這是一個昂貴的協議,允許丟失或損壞的數據按照發送順序重新傳輸。第二個協議是用戶數據報協議(User Datagram Protocol, UDP),它允許接收方檢測損壞的數據包,而不保證它們按照正確的順序發送(或者根本不發送)。然而,UDP通常比TCP快。TCP被稱為可靠協議。UDP是不可靠的。


4、Java網路編程基本概念——應用程序層


向用戶交付數據的層稱為應用層。以下三個層定義如何將數據從一台計算機傳輸到另一台計算機。應用層決定數據傳輸後的操作。有HTTP為用戶Web, SMTP, POP, IMAP為用戶電子郵件;FSP, TFTP用於文件傳輸,NFS用於文件訪問;文件共享使用Gnutella和BitTorrent;會話發起協議(SIP)和Skype用於語音通信。此外,您的程序可以在必要時定義自己的應用程序級協議。(頁面)


5、Java網路編程基本概念——IP、TCP、UDP


IP被設計成允許任意兩點之間有多條路由,繞過損壞的路由器來路由數據包。由於兩點之間有多條路由,而且由於網路流量或其他因素,它們之間的最短路徑可能會隨著時間而變化,因此構成特定數據流的數據包可能不會走同一條路由。即使它們全部到達,也可能不是按照它們被發送的順序到達的。為了改進這一基本機制,TCP被放置在IP上,以便連接的兩端可以確認收到的IP數據包,並請求重傳丟失或損壞的數據包。此外,TCP允許接收端上的數據包按照發送的順序重新分組。


然而,TCP有很多開銷。因此,如果單個數據包的丟失不會完全破壞數據,那麼可以使用UDP發送數據包,而不需要TCP提供的保證。UDP是一種不可靠的協議。它不能保證信息包將到達它們的目的地,或者它們將以它們被發送的相同順序到達。


6、Java網路編程基本概念——IP地址和域名


IPv4網路上的每台計算機都有一個4位元組的數字ID。通常在一個點上以四段格式寫,比如192.1.32.90,每個數字是一個無符號位元組,范圍從0到255。IPv4網路上的每台計算機都有一個唯一的四段地址。當數據通過網路傳輸時,包的報頭包括要發送到的機器的地址(目的地址)和要發送到的機器的地址(源地址)。路由上的路由器通過檢查目的地址來選擇發送包的最佳路徑。包含源地址是為了讓收件人知道該對誰進行回復。


雖然計算機可以很容易地處理數字,但人類並不擅長記住它們。因此,域名系統(DNS)被開發出來,用來將容易記住的主機名(如www.12345.com)轉換成數字互聯網地址(如208.201.243.99)。當Java程序訪問網路時,它們需要同時處理數字地址和相應的主機名。這些方法由java.net.InetAddress類提供。


7、Java網路編程基本概念——港口


如果每台計算機一次只做一件事,地址就足夠了。但是現代計算機同時做許多不同的事情。電子郵件需要與FTP請求分開,而FTP請求也需要與Web通信分開。這是通過埠完成的。具有IP地址的每台計算機有數千個邏輯埠(確切地說,每個傳輸層協議有65,535個埠)。這些只是計算機內存中的抽象,不代表任何物理對象,不像USB埠。每個埠在1到65535之間進行數字標識。每個埠可以分配給一個特定的服務。


8、Java網路編程基本概念——一個防火牆


在互聯網上有一些頑皮的人。要排除它們,通常需要在本地網路上設置一個接入點,並檢查進出該接入點的所有流量。位於網際網路和本地網路之間的一些硬體和軟體會檢查所有輸入和輸出的數據,以確保它是防火牆。防火牆通常是路由器的一部分,它將本地網路連接到更大的網際網路,並可以執行其他任務,如網路地址轉換。另外,防火牆可以是單獨的機器。防火牆仍然主要負責檢查進出其網路介面的數據包,根據一組規則接收或拒絕數據包。


本篇《什麼是Java網路編程基本概念?看完這篇文章你一定可以明白》到這里就已經結束了,小編一直認為,某一個編程軟體受歡迎是有一定原因的,首先吸引人的一定是其功能,環球網校的小編祝您java學習之路順利,如果你還想知道更多java知識,也可以點擊本站的其他文章進行學習。

C. java socket網路編程

//==============Server.java=================//
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(12345);
System.out.println("伺服器就緒,請啟動客戶端.");
Socket so = s.accept();
byte[] buff = new byte[1024];
int read = so.getInputStream().read(buff);
String[] abc=new String(buff,0,read).split("\\D+");
int a = Integer.parseInt(abc[0]);
int b = Integer.parseInt(abc[1]);
int c = Integer.parseInt(abc[2]);
if(!cbt(a,b,c))
so.getOutputStream().write("輸入的數據無法組成三角形.".getBytes());
else
so.getOutputStream().write(getArea(a,b,c).getBytes());
so.getOutputStream().flush();
so.close();
s.close();
}

private static String getArea(int a, int b, int c) {
float s = (a+b+c)/2f;
return "面積: "+Math.sqrt(s*(s-a)*(s-b)*(s-c));
}

private static boolean cbt(int a, int b, int c) {
return a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b;
}
}

//=================Client.java======================//
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("輸入三角形的三邊並用逗號隔開,如: (3,4,5) ");
byte[] buff=new byte[64];
int r = System.in.read(buff);
String ipaddr = "localhost";//根據情況改變,在本機調試就不改了
Socket so = new Socket(ipaddr,12345);
so.getOutputStream().write(new String(buff,0,r).getBytes());
r = so.getInputStream().read(buff);
so.close();
String rs = new String(buff,0,r);
System.out.println(rs);
}

}

//先啟動Server,再啟動Client

D. java main函數怎麼設置參數

在Java程序設計語言中,每一個應用程序都必須包含一個main方法:
publicstaticvoid
main(String[]
args)
{}
main方法是程序的入口方法;
main方法的訪問修飾符為public,不能省略,也不能定義為private和protected;
main方法必須是靜態方法,使得JVM在調用main方法時不用實例化類;
main方法必須是無返回值(void)的方法,參數必須是字元串數組(String[]);

E. java 方法傳參時,不是必須傳的參數如何設置

1、java是強匹配的,調用方法,對應的參數必須要有值,如果不是必須傳的,意思是你可能不需要用的,可以傳null

2、或者改造原有的方法參數,把多餘的參數去掉

3、或者另外寫一個方法,少參數的,然後該方法內部,調用原來的方法

4、代碼截圖如下:

5、看代碼,13行的,就相當於調用少一個參數的

拓展資料:

如題,有一個方法里兩個形參,我另一個文件類中一個方法想要那個方法的返回值,可是第二個參數在這里用不到,能否只傳第一個參數 如何實現,前提這個類不能繼承後重寫方法,因為多人合同寫的。

解決方案

不可以,變通的辦法是再寫一個只有一個參數的函數重載形式,在其中給另一個參數一個預設值,間接調用。

解決方案二:

一個Action調用兩個不同的方法

解決方案三:

調用的時候給一個無影響的值

解決方案四:

講道理的話是不能這樣做的,不過如果你傳的第二個參數如果對於當前調用時沒有意義也是可以傳一個值的。

解決方案五:

首先,Java語法規定了方法的參數列表,那麼調用的時候就需要按照方法定義傳遞給足夠的參數,你那種需要少傳參的話可以重載方法,不要定義那麼多參數就可以了。

解決方案六:

你一個方法傳入兩個參數,但如果你只調用一個,那麼另外一個參數你讓人家多尷尬,你讓人家尷尬了,人家也不會讓你好過的,因此就給你報錯啊,當然你可以像樓上所說,傳入一個無影響的參數進去,但這又有什麼意義,還造成代碼的浪費,你這個方法每調用一次,就造成一次浪費,因此,最好的方法就是傳入一個參數,寫一個重載方法。初學者經驗不足,互相指教~

解決方案七:

既然用不到第二個參數,最簡單的,給個無關痛癢的初始值。

解決方案八:

方法定義2個參數,在方法體內提供判斷參數,看傳入的參數是否為null,調用方法時,只傳入一個值,另一個是null就行。

解決方案九:

方法 重載一下 就好了。



F. 什麼是Java網路編程

網路編程主要是指網路通信,實現計算機與計算機之間的對話和文件傳輸等,就像QQ,飛秋,P2P點對點傳輸等等

G. java 網路編程相關問題

1、變數分很多種,根據截圖您定義的是局部變數,局部變數如不作為參數傳遞的話不可跨方法使用。
2、若您想跨方法使用該變數可以將in定義為全局變數、類變數、常量等。具體方法建議您查看java手冊。

H. java main函數怎麼設置參數

如果用命令的方式運行java程序,在運行命令後面添加參數值即可,例如:
普通java運行命令:java helloworld
加參數運行命令:java helloworld 張三

普通java運行命令:java -jar test.jar
加參數運行命令:java -jar test.jar 張三

張三就是第一個參數,第二個參數依次掛在後面即可,在mian函數的args參數中可以獲取到的。

如果是eclipse這樣的開發環境,應該可以找到配置程序啟動參數的地方。例如:
elipse配置方式為:Run As-->Run Configurations->Arguments->Program arguments 中輸入 參數值即可,空格隔開。
其他開發工具類似。

I. java URL 添加參數的幾種簡單方式

主要有三種方式,先給大家第一種managed-bean,必須 scope設置為request
<managed-bean>
<managed-bean-name>nameBean</managed-bean-name>
<managed-bean-class>demo.NameBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>userName</property-name>
<value>#param.name</value>
</managed-property>
...
....
</managed-bean>

第二種方式:缺點是無法往後台傳數據,當然你用javascript做一下動作也可以

<h:inputHidden id="userName" value="#{nameBean.userName}"/>

第三種方式,是直接在bean中獲得,我認為這種應該是最實用、保險的方式。

public static String getRequestParameter(String name) {
return (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
}

J. java網路編程包含些什麼

java網路編程通常包括三部分TCP/IP , UDP ,URL ;socket只是其中的一個套接字。web,jsp與上面一點關系也沒有,上面是j2se的內容。下面則是j2ee內容。web是一個服務,而jsp是一種技術。實在找關系的話,web包括了jsp.

閱讀全文

與java網路編程需要設置什麼參數相關的資料

熱點內容
合肥付費網路推廣哪裡有 瀏覽:211
網路怎麼設置才最好 瀏覽:741
wifi網路設置是有線無線 瀏覽:622
網路游戲溫度多少度 瀏覽:449
教室的希沃白板怎麼連接網路 瀏覽:570
三星i450網路設置 瀏覽:491
電腦無法連接家用網路 瀏覽:95
昆廣電電腦怎麼連接網路 瀏覽:166
有什麼好玩的網路 瀏覽:725
橋接三個路由器網路有點不穩定 瀏覽:690
寧波無線網路證在哪裡考 瀏覽:523
1g網路多少公里 瀏覽:291
5g網路兩排信號 瀏覽:420
無線網路原始用戶名 瀏覽:161
黑鯊手機在哪顯示移動網路 瀏覽:114
電腦數據包傳送少接收不到網路 瀏覽:417
相機網路連接在哪裡設置 瀏覽:88
淘寶網網路營銷策略 瀏覽:822
網路營銷對營銷渠道的影響 瀏覽:146
共享網路出錯怎麼辦 瀏覽:134

友情鏈接