⑴ java 怎麼操作網路協議的
<pre t="code" l="java">private void postData(String url, String data) throws Exception {
URL url = new URL(url);
URLConnection urlConnection = url.openConnection();
urlConnection.setDoOutput(true);
// 提交數據
try (PrintWriter pw = new PrintWriter(urlConnection.getOutputStream(), true)) {
pw.write(data);
}
// 獲得返回結果
try (BufferedReader br = new BufferedReader(
new InputStreamReader(urlConnection.getInputStream(), "UTF-8"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}這是當初我登錄我們學校校園網的代碼(基於 JDK7),參數 url 是你登錄的起始網址(就是讓你輸入用戶名和密碼的那個,參數 data 是要提交的數據,就是形如 username=xxxpassword=yyyaction=login 這樣的格式。你可以自己先使用瀏覽器通過「審查元素」,然後再控制台看一下登錄的時候到底需要提交哪些欄位。
⑵ Java中怎麼注冊協議
注冊協議
URL的static URLStreamHandler getURLStreamHandler(String protocol) 方法用於獲取獲取協議處理類
URL提供了兩種注冊協議的途徑。
1)設置URLStreamHandlerFactory,2)設置jvm啟動參數java.protocol.handler.pkgs。
兩者可以同時使用。
設置URLStreamHandlerFactory
URL的方法
public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac) {
synchronized (streamHandlerLock) {
if (factory != null) {
throw new Error("factory already defined");
}
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkSetFactory();
}
handlers.clear();
factory = fac;
}
}
public interface URLStreamHandlerFactory {
URLStreamHandler createURLStreamHandler(String protocol);
}
整個jvm只能設置一次,再次設置不起作用。調用URL.setURLStreamHandlerFactory(fac)。
一般是在伺服器的代碼中設置,比如tomcat,jboss ,was等,用於注冊伺服器自己的協議,應用級沒法設置,因為伺服器已經設置過了,應用即使設置了也不起作用。
啟動參數-Djava.protocol.handler.pkgs
通過-Djava.protocol.handler.pkgs=cn.ccb.wfcp注冊自定義協議的包。要求協議處理類的類名必須是Handler,包名的最後是協議名。示例如下,定義了brules協議。
package cn.ccb.wfcp.brules;
public class Handler extends URLStreamHandler {
如果要定義多個協議包就用"|"分割,比如-Djava.protocol.handler.pkgs=cn.ccb.wfcp|cn.ccb.wfcp22.
jvm內置的協議也是按照上面的方式定義的,但不用通過-Djava.protocol.handler.pkgs注冊,而是將內置的協議包拼接到後面。內置協議都在sun.net.www.protocol包下面。
獲取到Handler類名後去載入class。Class cls = null;
try {
cls = Class.forName(clsName);
} catch (ClassNotFoundException e) {
ClassLoader cl = ClassLoader.getSystemClassLoader();
if (cl != null) {
cls = cl.loadClass(clsName);
}
}
if (cls != null) {
handler =
(URLStreamHandler)cls.newInstance();
}
⑶ 用的java,通信協議中上下行報文是什麼意思
報文:通訊中發送的數據包。
上行:常指從客戶端發送至伺服器端。
下行:常指從伺服器端發送回客戶端。
⑷ java 如何實現 http協議傳輸
Java 6 提供了一個輕量級的純 Java Http 伺服器的實現。下面是一個簡單的例子:
public static void main(String[] args) throws Exception{
HttpServerProvider httpServerProvider = HttpServerProvider.provider();
InetSocketAddress addr = new InetSocketAddress(7778);
HttpServer httpServer = httpServerProvider.createHttpServer(addr, 1);
httpServer.createContext("/myapp/", new MyHttpHandler());
httpServer.setExecutor(null);
httpServer.start();
System.out.println("started");
}
static class MyHttpHandler implements HttpHandler{
public void handle(HttpExchange httpExchange) throws IOException {
String response = "Hello world!";
httpExchange.sendResponseHeaders(200, response.length());
OutputStream out = httpExchange.getResponseBody();
out.write(response.getBytes());
out.close();
}
}
然後,在瀏覽器中訪問 http://localhost:7778/myapp/
⑸ 請幫忙用java socket寫個通信類,通信協議是如下,謝謝!
這個協議要花很久時間的,估計在網路知道沒人會給你做出來
不過這個 不是什麼難東西 懂得基礎的socket知識即可 至少稍微有些繁瑣罷了
加油
⑹ java多種協議網路通訊 如何封裝
網路通訊與UI層中間在加一個層,這個層就封裝所要調用的介面,以統一協議的介面暴露給UI層,這樣如果網路通訊介面變了,就改中間的那個層就行了。
⑺ JAVA語言支持哪些協議 各協議對JAVA具體的用途
協議最主要用於通信,通信雙方必須遵守協議才能進行正常通信。
可以用生活中的寄信來類比。寄信方必須寫明收信方的地址及收信人姓名,並且把信件放到信封中貼上郵票投遞到郵箱中,收信人才能收到此信件。收信方必須到郵箱中才能收取信件。這種對通信雙方的約束規則,便是協議!
例如Http協議,它規定了瀏覽器應該以什麼樣的格式且怎樣發送請求和接受響應,同時也規定了伺服器應該怎麼樣解析瀏覽器發來的請求並且作出響應。在Http協議的約束下,不同的瀏覽器才能和不同的伺服器實現正常通信!
⑻ java有沒有Diameter協議的標准實現
我也剛剛了解不久,大概是這個意思吧。SIP協議主要解決了IP應用於電信級領域的問題。(IP是自由開放的,但是電信級領域是封閉的,可管的)而DIAMETER協議主要用於:認證(Authentication)、授權(Authorization)、計帳(Accounting)(DIAMETER本身就是個AAA協議)。
具體貌似有個DIAMETER SIP協議,用於IMS的注冊,會話,注銷和升級