导航:首页 > 编程语言 > javatcp16进制

javatcp16进制

发布时间:2023-03-22 17:03:18

java中使用socket编程 发送16进制数据,应该如何实现

直接发送字符串就行,数据在发送前 先处理成 16进制的

㈡ 用JAVA将十进制转换成十六进制

1、用Integer.toHexString方法即可将十进制装成十六进制。

package com.test;

public class Test {

public static void main(String[] args) {
int i = 123;
System.out.println(Integer.toHexString(i));
}
}

㈢ java UTF-8转换为16进制

我不知道你的16进制UTF-8编码是哪来余则的,但明显庆毁山是定长的UTF-16编码

byte[] b(byte)0x62,(byte)0x11,(byte)0x72,(byte)0x31};
try {
System.out.println(new String(b,"誉中UTF-16"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

㈣ java串口通信中怎样以十六进制数发送

做串口通讯的时候基本都是通过流读取、输出。那么在java开发中发送数据的时候使用OutputStream,而其write()的参数是字节数组、int整形。如果使用字节数组发送的时候,通常可以直接写成out.write("1234".getBytes())。这样一来单片机读到的数据则是31 32 33 34。但是在串口发送的时候先把16进制字符串转化为byte数组在发送出来,则是发送什么读取到的就是什么。使用:out.write(HexString2Bytes("1234"));那么读取到的还是1234。16进制字符串转化为byte数组的方法为:
public static byte[] HexString2Bytes(String src) {
if (null == src || 0 == src.length()) {
return null;
}
byte[] ret = new byte[src.length() / 2];
byte[] tmp = src.getBytes();
for (int i = 0; i < (tmp.length / 2); i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}

在用java做串口开发的时候建议使用开源的Rxtx做。效率、使用方法都要优。使用sun开源的comm个人觉得不是很便利。rxtx网上有开源实例。可以根据自己个需求进行加以修饰利用。

㈤ 求大佬指点 JAVA中TCP/IP服务端收到的数据怎么存到数据库

无论是哪种语言,TCP的数据都是两种,一种是未解析过的原始报文(十六进制),这种可以存数据库,也可以是日志形式存在日志文件中,当做备份,调试查找问题的时候也可以通过这些原始报文来检查问题所在。另一种就是这些原始报文经过解析后的结果,比如ID、时间、其它数据这些,解析出来后直接插入你预先创建的数据库就可以了,这个就是历史库,当然一般来说,如果你的数据是以不同的设备ID区分的,通常还有一个最新状态库,它跟历史库结构一样,但同一个设备ID只有最新的一条记录。

㈥ java中,服务器端用socket发送16进制数据,需要怎么做socket.getOutpuStream()需要怎么用用TCP协议。

getOutputStream(),从连接获取输入流锋贺对象。
这个对象可以和BufferedOutputStream,OutputStreamWriter等物肆配合使用;
建立BufferedOutputStream对象
BufferedOutputStream br=new BufferedOutputStream(socket.getOutputStream());
调用BufferedOutputStream对象的,write向流中银蚂派写入数据。

㈦ Java TCP socket通信,如何实现发送十六进制值,并在数据接收窗口中显示这些数据对应的字符串,非常感谢!

我自己的电脑上有一段源代码,就是基于TCP聊天小代码,能进行相互之间的消息接受。我的代码是直接传输字符串的,不是16进制滴。嗯,也贴出来看看吧!

运行服务器,c1,c2就可以了,c1与c2可进行通信。

Client.java

import java.net.*;
public class Client{
static byte num=1;
private int portNum;

public Client(int portnum){
this.portNum=portnum;
System.out.println("您是第"+num+"位客服端");
num++;
}

public void sentMessage(String me){
//都是向服务器发信息端口号1999
try{
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(me.getBytes(),me.length(),InetAddress.getByName("127.0.0.1"),1999);
ds.send(dp);
ds.close();
}catch(Exception e){
e.printStackTrace();
}

}

public String receiveMessage(){
String str="";
try{
DatagramSocket ds=new DatagramSocket(this.portNum);//表示哦自己的接收端口号是1999
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
str=new String(dp.getData(),0,dp.getLength());
ds.close();
}catch(Exception e){
e.printStackTrace();
}

return str;
}
}

c1.java

import java.util.*;
public class c1 implements Runnable{
Client cl;
boolean goon=true;
Scanner sc=new Scanner(System.in);
public c1(){
cl=new Client(2000);
System.out.println("这里是2000客户端\n你可以发送信息。请输入要发送的信息。out退出");

new Thread(this).start();
while(this.goon==true){
say();
}
if(goon==false){
System.exit(0);
}
}

public static void main(String[] args){
new c1();
}

public void say(){
String mess=sc.nextLine();
System.out.println("是否发送y/n");
String key=sc.nextLine();
if(key.equals("y")){
System.out.println("信息信息发送中……");
try{
cl.sentMessage(mess);
}catch(Exception e){
e.printStackTrace();
}
}
else if(key.equals("out")){
goon=false;
}
}

public void run(){
while(this.goon==true){
String sst="";
try{
sst=cl.receiveMessage();
}catch(Exception e){
e.printStackTrace();
}

if(sst.length()>0){
System.out.println(sst);
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}

}
System.out.println("程序结束!");
}
}

c2.java

import java.util.*;
public class c2 implements Runnable{
Client cl;
boolean goon=true;
Scanner sc=new Scanner(System.in);
public c2(){
cl=new Client(2001);
System.out.println("这里是2001客户端\n你可以发送信息。请输入要发送的信息。out退出");
new Thread(this).start();
while(goon==true){
say();
}
if(goon==false){
System.exit(0);
}
}

public static void main(String[] args){
new c2();
}

public void say(){
String mess=sc.nextLine();
System.out.println("是否发送y/n");
String key=sc.nextLine();
if(key.equals("y")){
System.out.println("信息信息发送中……");
try{
cl.sentMessage(mess);
}catch(Exception e){
e.printStackTrace();
}
}
else if(key.equals("out")){
this.goon=false;
}
}

public void run(){
while(this.goon==true){
String sst="";
try{
sst=cl.receiveMessage();
}catch(Exception e){
e.printStackTrace();
}

if(sst.length()>0){
System.out.println(sst);
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}

}
System.out.println("聊天关闭!");
}
}

Server.java

import java.net.*;
import java.util.*;
public class Server implements Runnable{
private String message;
boolean work=true;
byte tm=10;
String[] clomessage={"信息:正在断开网络连接.",".",".\n","信息:设置保存中……","","","完成\n","信息:欢迎下次使用\n","信息:完成\n","Goodbye!"};
public Server(){
new Thread(this).start();
System.out.println("本程序为服务端Server");
Scanner sc=new Scanner(System.in);
System.out.println("输入命令out关闭服务器");
String clo=sc.nextLine();
if(clo.equals("out")){
System.out.println("正在关闭服务器……");
setwork(false);
System.exit(0);
}

}

public static void main(String[] args){
new Server();

}

public void setwork(boolean bo)
{
this.work=bo;
}

public void setMessage(String str){
this.message=str;
}

public String getMessage(){
return this.message;
}

public void sentMessage(){
String mes=this.getMessage();
try{
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(mes.getBytes(),mes.length(),InetAddress.getByName("127.0.0.1"),2000);
DatagramPacket dp2=new DatagramPacket(mes.getBytes(),mes.length(),InetAddress.getByName("127.0.0.1"),2001);
ds.send(dp);
ds.send(dp2);
ds.close();
System.out.println("信息发送至:127.0.0.1:2000 & 127.0.0.1:2001");
this.setMessage("");
}catch(Exception e){
e.printStackTrace();
}
}

public void receiveMessage() throws Exception{
try{
DatagramSocket ds=new DatagramSocket(1999);//表示哦自己的接收端口号是1999
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
if(str.length()>0){
this.setMessage(str);
System.out.println("信息:Server从"+dp.getAddress().getHostAddress()+"主机(端口号:"+dp.getPort()+")收到信息:"+this.getMessage());
}

ds.close();
}catch(Exception e){
e.printStackTrace();
}
}

public void run(){
while(tm>0){
if(work==false){
tm--;
System.out.print(clomessage[9-tm]);
}
try{
receiveMessage();//时刻接受信息
}catch(Exception e){
e.printStackTrace();
}

if(this.getMessage().length()>0){//如果接收到信息则发送信息

try{
sentMessage();
}catch(Exception e){
e.printStackTrace();
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}

}
}
}
}

呵呵,请指教啊!

㈧ 如何使用java的socket向服务端发送十六进制字符串

短小精悍,必对!

1,首先将你的16进制的数据,转化成byte[],然后发送
2,获得数据,然后将byte[]的东西转化成String,int等你可以看清的进行显示

㈨ JAVA串口怎么发送16进制

那就需要转换了。
我枝庆最近也在做这样的项目,转换友搭磨来,转换去麻烦死。

发送的16进制串要先转换为byte[]然后writer
接受方read()后要把字节在转换成16进制串。
//16进制串转换好斗成字节数组
public static byte[] hexStringToBytes(String hexString)
{
if ((hexString == null) || (hexString.equals(""))) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; ++i) {
int pos = i * 2;
d[i] = (byte)(charToByte(hexChars[pos]) << 4 | charToByte(hexChars[(pos + 1)]));
}
return d;
}

private static byte charToByte(char c)
{
return (byte)"0123456789ABCDEF".indexOf(c);
}
//字节数组转换成16进制串
public static String byte2HexStr(byte[] b, int length)
{
String hs = "";
String stmp = "";
for (int n = 0; n < length; ++n) {
stmp = Integer.toHexString(b[n] & 0xFF);
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else {
hs = hs + stmp;
}
}
return hs.toUpperCase();
} 不明白+wo 448667

㈩ TCP&UDP测试工具上面勾选的‘按16进制’是什么意思

这个是说封装, TCP/UDP是在网络模型的四层。
tcp包头是2进制字段,请参考文档RFC793

RFC文档里面有详细的包头封装格式

阅读全文

与javatcp16进制相关的资料

热点内容
pdf文件全部链接 浏览:456
秘密文件一般保存多少年 浏览:952
文件夹隐藏后怎么恢复 浏览:251
文件恢复360 浏览:914
c打开文件夹选择文件 浏览:430
工程变更文件需要多少份 浏览:227
风云三国28文件修改器 浏览:461
哪个app有pets词汇 浏览:926
苹果6s看电影屏幕变暗 浏览:474
怎么注册文件 浏览:600
excel数字怎么自动填入相同数据 浏览:652
上百万条数据用什么软件处理 浏览:680
打开的程序不是全屏 浏览:837
不用u盘传文件 浏览:673
什么少儿编程课网课哪个好 浏览:98
win101706开始界面 浏览:152
java二维数据初始化 浏览:174
listmapjava 浏览:296
利用视频赚钱的网站有哪些 浏览:766
iphone4sios711降级 浏览:246

友情链接