导航:首页 > 编程语言 > java报文

java报文

发布时间:2022-01-13 04:21:56

java解析发送tcp ip报文

JAVA 写一个SOCKET 服务器,接收、处理单片机递交上来的数据

通过文字输入流,直接可以当字符处理的。也很方便输出返馈。

Ⅱ java怎么解析文本文件中的soap报文

首先,通过流的方式读取txt中soap报文字符串。第二步,通过dom4j读取soap报文字符串进行解析(常规的xml解析)

Ⅲ Java Socket开发 关于报文传递和接收

看 Oracle 官方教程,同步式的 Socket 就是传统的一问一答方式,它就是你需要的。

客户端先 socket.getOutputStream().write(...); 之后到 socket.getInputStream().read(byte[]) 在循环中读取直到 read 方法返回 -1 或你期望的字节数已经全部收到了就停下来,如果不尝试停下来,后面的 read 将会阻塞等待。


http://docs.oracle.com/javase/tutorial/networking/sockets/index.html


基于性能改进,一般我们需要使用 NIO 异步的 socket,只需要一个线程负责通信,每个线程都有自己的出站消息队列和入站消息队列,以线程为 key 区分开,通信线程只负责把各自的消息从出站队列中发送去并把收到的消息放入入站队列中,应用程序线程就去各自的消息队列中取消息就可以了。因为每个应用线程有各自的消息队列,我们把消息放入出站队列之后就到入站队列上用同步锁等待的方法阻塞到有消息回答时为止。


关于 NIO non-blocking 非阻塞式 socket,下面有一个 NBTimeServer 例子,它讲的是服务端。客户端与此类似,

http://docs.oracle.com/javase/7/docs/technotes/guides/io/example/index.html


NIO 通信线程样例。

publicvoidrun()
{
inttip=0;
try
{
selector=Selector.open();
SelectionKeyk=channel.register(selector,getInterestOptions());
k.attach(thread);//把当前线程绑定到附件中。

this.running=true;
statusChanged(Status.CONNECTED);
while(this.isRunning())
{
//select()isablockingoperation.
inteventCount=selector.select();
debug("[MC.Debug]PollingTCPevents..."+eventCount);
if(eventCount>0&&channel.isOpen()&&this.isRunning())
{
Setkeys=selector.selectedKeys();
for(Iteratoriter=keys.iterator();iter.hasNext();iter.remove())
{
SelectionKeykey=(SelectionKey)iter.next();
Threadthread=(Thread)key.attachment();

if(!key.isValid())
{//channelisclosing.
break;
}
process(key);//处理读取消息并把消息放入thread对应的队列。//写出消息类似的,不过在register时需要注册写出允许的事件,

}
}
}
}

Ⅳ java中报文啥时候用呢一直搞不懂

你可以了解一下http协议
报文就是一组客户端和服务端都认可的信息数据。可以是xml形式,json格式。等等
比如有一个android客户端向服务端发送登陆报文
<user>
<username></username>
<password>123456</password>
</user>
这段由客户端到服务端的xml,就可以视为一个上行报文
服务端收到报文后会返回登陆成功或者失败的信息
比如:200(成功)
404 (失败)
甚至返回更详细的失败信息等等这个由服务端到客户端的返回信息同样可以是多样性,可视为下行报文

Ⅳ java 解析数据报文

数据报文有很多协议的
你要分析的那种?
其实那种都大同小异
用DatagramSocket类和DatagramPacket类
socket建立连接
packet取得数据报
然后对不同的类型进行分析咯

Ⅵ 如何用java发送http报文

给你一个吧,这个能抓取任何程序

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class WebClient{
public static String getWebContent(String urlString,final String charset,int timeout) throws IOException {
if(urlString==null||urlString.length()==0) {
return null;
}
urlString = (urlString.startsWith("http://") || urlString
.startsWith("https://")) ? urlString : ("http://" + urlString)
.intern();
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn
.setRequestProperty(
"User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");//增加报头,模拟浏览器,防止屏蔽
conn.setRequestProperty("Accept", "text/html");//只接受text/html类型,当然也可以接受图片,pdf,*/*任意,就是tomcat/conf/web里面定义那些
conn.setConnectTimeout(timeout);
try {
if(conn.getResponseCode()!=HttpURLConnection.HTTP_OK) {
return null;
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input,
charset));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line).append("\r\n");
}
if(reader!=null) {
reader.close();
}
if(conn!=null) {
conn.disconnect();
}
return sb.toString();

}
public static String getWebContent(String urlString) throws IOException {
return getWebContent(urlString,"iso-8859-1",5000);
}

public static void main(String[]args) throws IOException {
String s = getWebContent("http://www.sina.com");
s = new String(s.getBytes("iso-8859-1"),"gb2312");
System.out.println(s);
}
}

Ⅶ java解析报文

ByteBuffer bb = ByteBuffer.wrap(data, offset, length);
if (bb.remaining() < MIN_HEADER_LENGTH) {
return this;
}

this.opCode = bb.get();
this.transactionId = bb.getInt();

按照这种节奏搞吧,这个很简单的啊,拿到BYTEBUFFER以后,一点一点的处理byte。

Ⅷ 用java代码怎样将报文A生成报文的某个值传递给报文B中的某个字段

看 Oracle 官方教程,同步式的 Socket 就是传统的一问一答方式,它就是你需要的。
客户端先 socket.getOutputStream().write(...); 之后到 socket.getInputStream().read(byte[]) 在循环中读取直到 read 方法返回 -1 或你期望的字节数已经全部收到了就停下来,如果不尝试停下来,后面的 read 将会阻塞等待。

http://docs.oracle.com/javase/tutorial/networking/sockets/index.html

基于性能改进,一般我们需要使用 NIO 异步的 socket,只需要一个线程负责通信,每个线程都有自己的出站消息队列和入站消息队列,以线程为 key 区分开,通信线程只负责把各自的消息从出站队列中发送去并把收到的消息放入入站队列中,应用程序线程就去各自的消息队列中取消息就可以了。因为每个应用线程有各自的消息队列,我们把消息放入出站队列之后就到入站队列上用同步锁等待的方法阻塞到有消息回答时为止。

关于 NIO non-blocking 非阻塞式 socket,下面有一个 NBTimeServer 例子,它讲的是服务端。客户端与此类似,
http://docs.oracle.com/javase/7/docs/technotes/guides/io/example/index.html

Ⅸ 怎么样用java发送Tcp报文

你可以用socket编程,java socket是封装了TCP协议的,不需要你去设置里面的一些参数了。
你还可以用java jpcap编写,这个可以发送接收arp,tcp,udp,icmp等各种报文

Ⅹ 如何实现java解析网络协议报文

普通参数:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

文件参数:
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

参数实体的最后一行是: --加上boundary加上--,最后换行,这里的 格式即为: --OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp--。

模拟文件上传请求
public static void uploadFile(String fileName) {
try {
// 换行符
final String newLine = "\r\n";
final String boundaryPrefix = "--";
// 定义数据分隔线
String BOUNDARY = "========7d4a6d158c9";
// 服务器的域名
URL url = new URL("www.myhost.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置为POST情
conn.setRequestMethod("POST");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求头参数
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
OutputStream out = new DataOutputStream(conn.getOutputStream());
// 上传文件
File file = new File(fileName);
StringBuilder sb = new StringBuilder();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
// 文件参数,photo参数名可以随意修改
sb.append("Content-Disposition: form-data;name=\"photo\";filename=\"" + fileName
+ "\"" + newLine);
sb.append("Content-Type:application/octet-stream");
// 参数头设置完以后需要两个换行,然后才是参数内容
sb.append(newLine);
sb.append(newLine);
// 将参数头的数据写入到输出流中
out.write(sb.toString().getBytes());
// 数据输入流,用于读取文件数据
DataInputStream in = new DataInputStream(new FileInputStream(
file));
byte[] bufferOut = new byte[1024];
int bytes = 0;
// 每次读1KB数据,并且将文件数据写入到输出流中
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
// 最后添加换行
out.write(newLine.getBytes());
in.close();
// 定义最后数据分隔线,即--加上BOUNDARY再加上--。
byte[] end_data = (newLine + boundaryPrefix + BOUNDARY + boundaryPrefix + newLine)
.getBytes();
// 写上结尾标识
out.write(end_data);
out.flush();
out.close();
// 定义BufferedReader输入流来读取URL的响应
// BufferedReader reader = new BufferedReader(new InputStreamReader(
// conn.getInputStream()));
// String line = null;
// while ((line = reader.readLine()) != null) {
// System.out.println(line);
// }
} catch (Exception e) {
System.out.println("发送POST请求出现异常!" + e);
e.printStackTrace();
}
}

阅读全文

与java报文相关的资料

热点内容
一个医生的妻子出轨的电影美国 浏览:382
编程之美答案 浏览:466
19月租流量热门app都有什么 浏览:633
法国电影一个女人当保姆教导自己的女儿 浏览:703
电影泳池男孩 浏览:481
下载什么app可以制作生日请柬 浏览:922
同性肉多电影 浏览:34
mac邮箱服务器地址 浏览:802
真分数化简成最简的算法 浏览:515
视易锋云服务器新加硬盘 浏览:41
加密web的数据 浏览:435
一套铠甲中间一只眼是什么电影 浏览:298
冒泡算法c语音 浏览:945
运筹算法工程师 浏览:591
国产电影推荐动作大片 浏览:618
什么app不用网络也可以玩 浏览:313
程序员必备知识 浏览:603
程序员东西没做完不让走 浏览:605
尼克电影 浏览:214
程序员的职业道德 浏览:91