「java设置协议」java协议有哪些

博主:adminadmin 2022-12-15 12:24:07 62

本篇文章给大家谈谈java设置协议,以及java协议有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java实现RIP协议

OSPF使用链路状态协议,RIP使用距离向量协议

(1)当链路变化时,OSPF向本自治系统所有路由器发出信息,即洪泛法。而RIP只向相邻路由器发送

(2)OSPF发送的信息是与本路由器相连的所有链路状态,而RIP只发送到所有网络的距离和下一跳的路由器

(3)只有链路状态变化时,OSPF才发送信息。而RIP会定期与周围路由器交换信息。

怎么按照自定义协议用java解析进行远程通信

很简单的, 首先使用io框架, netty, mina 都行。

打开socket , 就可以收发数据了。

接来下选择序列化框架,这取决于你的协议类型。文本协议? 字节协议?

文本协议: 比如 json? 那就用fast-json,jackson等来讲对象序列化和反序列化。

字节协议:使用 magic-byte; java-struct之类的框架来进行序列化和反序列化。

能传输, 能序列化/反序列化。 OKK 问题全部解决。 哈哈哈

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.包下面。

获取到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中如何设置HTTP协议的头信息(header)

首先,我们先看一下http的头信息到底是什么:

HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。

在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:

HttpResponse response = null;

HttpGet get = new HttpGet(url);

get.addHeader("Accept", "text/html");

get.addHeader("Accept-Charset", "utf-8");

get.addHeader("Accept-Encoding", "gzip");

get.addHeader("Accept-Language", "en-US,en");

get.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");

response = client.execute(get);

HttpEntity entity = response.getEntity();

Header header = entity.getContentEncoding();

if (header != null)

{

HeaderElement[] codecs = header.getElements();

for (int i = 0; i codecs.length; i++)

{

if (codecs[i].getName().equalsIgnoreCase("gzip"))

{

response.setEntity(new GzipDecompressingEntity(entity));

}

}

}

return response;

其中,client为一个HttpClient的实力,创建方式如:

SchemeRegistry schemeRegistry = new SchemeRegistry();

schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));

schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));

PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);

cm.setMaxTotal(200);

cm.setDefaultMaxPerRoute(2);

HttpHost googleResearch = new HttpHost("research.google.com", 80);

HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80);

cm.setMaxPerRoute(new HttpRoute(googleResearch), 30);

cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50);

DefaultHttpClient client = new DefaultHttpClient(cm);

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设置协议的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java协议有哪些、java设置协议的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-15,除非注明,否则均为首码项目网原创文章,转载请注明出处。