導航:首頁 > 編程語言 > 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進制相關的資料

熱點內容
u盤文件給刪了 瀏覽:737
vuejsoauth2 瀏覽:78
2017微信支付日 瀏覽:81
機械臂編程如何開發 瀏覽:21
標書U盤PDF文件要不要簽字 瀏覽:222
ps軟體文件復制到d盤 瀏覽:148
一般工業固廢招標文件內容 瀏覽:583
網站建設報價怎麼算 瀏覽:66
三星a7000升級安卓502 瀏覽:486
word2010清除分隔符 瀏覽:781
樂視怎麼切換網路 瀏覽:425
cad列印pdf文件名稱與cad不一致 瀏覽:815
電氣與可編程式控制制是什麼 瀏覽:67
文件名中允許使用英文豎線嗎 瀏覽:531
編程貓在哪裡 瀏覽:775
win8共享文件夾訪問許可權 瀏覽:380
cad文件顯示為只讀不能保存怎麼辦 瀏覽:703
如何在系統里忘記網路 瀏覽:24
中小企業出口數據在哪裡找 瀏覽:715
win8和xp傳文件 瀏覽:75

友情鏈接