最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何按16進制發(fā)送和接收TCP指令

 更新時間:2023年09月28日 10:23:24   作者:qq_38310536  
這篇文章主要介紹了Java如何按16進制發(fā)送和接收TCP指令問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Java按16進制發(fā)送和接收TCP指令

import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import org.apache.http.util.TextUtils;
public class TCPSocket{
	public static void main(String args[]){
		String cmdInfor="00 00 00 00 00 06 01 01 00 01 00 20";
		send(cmdInfor);
	}
	public static String send(String cmdInfor){ 
		String strReturn = null;
		try {  
			//要連接的服務端IP地址  
			String host = "192.168.1.2"; 
			//要連接的服務端對應的監(jiān)聽端口  
			int port = 502;   
			//將十六進制的字符串轉換成字節(jié)數組
			byte[] cmdInfor2 = hexStrToBinaryStr(cmdInfor);
			//1.建立客戶端socket連接,指定服務器位置及端口  
			Socket clientSocket =new Socket(host,port);  
			//2.得到socket讀寫流  
			OutputStream os=clientSocket.getOutputStream();  
			PrintWriter pw=new PrintWriter(os);  
			//輸入流  
			InputStream is=clientSocket.getInputStream();  
			//3.利用流按照一定的操作,對socket進行讀寫操作  
			os.write(cmdInfor2);  
			os.flush();  
			clientSocket.shutdownOutput();  
			//接收服務器的響應 
            		int line = 0; 
			byte[] buf = new byte[is.available()];
			 //接收收到的數據
           		 while((line=is.read(buf))!=-1){
	           	        //將字節(jié)數組轉換成十六進制的字符串
	            		strReturn= BinaryToHexString(buf);
           		 }
			//4.關閉資源  
			is.close();  
			pw.close();  
			os.close();  
			clientSocket.close();
		}catch (Exception e){
			e.printStackTrace();
		}
		return strReturn;
	}  
	/**
	 * 將十六進制的字符串轉換成字節(jié)數組
	 *
	 * @param hexString
	 * @return
	 */
	public static byte[] hexStrToBinaryStr(String hexString) {
		if (TextUtils.isEmpty(hexString)) {
			return null;
		}
		hexString = hexString.replaceAll(" ", "");
		int len = hexString.length();
		int index = 0;
		byte[] bytes = new byte[len / 2];
		while (index < len) {
			String sub = hexString.substring(index, index + 2);
			bytes[index/2] = (byte)Integer.parseInt(sub,16);
			index += 2;
		}
		return bytes;
	}
	/**
	 * 將字節(jié)數組轉換成十六進制的字符串
	 *
	 * @return
	 */
	public static String BinaryToHexString(byte[] bytes) {
	    String hexStr = "0123456789ABCDEF";
	    String result = "";
	    String hex = "";
	    for (byte b : bytes) {
	        hex = String.valueOf(hexStr.charAt((b & 0xF0) >> 4));
	        hex += String.valueOf(hexStr.charAt(b & 0x0F));
	        result += hex + " ";
	    }
	    return result;
	}
}

Java使用TCP協議發(fā)送和接收數據

TCP

TCP是面向連接的可靠傳輸協議

Java使用TCP發(fā)送數據代碼

三步:

  • (1) 創(chuàng)建客戶端的Socket對象Socket
  • (2) 獲取輸出流,寫數據
  • (3) 釋放資源
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class TCPTest01 {
? ? public static void main(String[] args) throws IOException {
? ? ? ? Socket s = new Socket(InetAddress.getByName("uos-pc"), 10086);
? ? ? ? OutputStream os = s.getOutputStream();
? ? ? ? os.write("FTP".getBytes());
? ? ? ? s.close();
? ? }
}

Java使用TCP接收數據代碼

四步

  • (1) 創(chuàng)建服務器Socket對象ServerSocket
  • (2) 監(jiān)聽客戶端鏈接,返回Socket對象
  • (3) 獲取輸入流,讀數據,控制臺顯示
  • (4) 釋放資源
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPTest02 {
? ? public static void main(String[] args) throws IOException {
? ? ? ? ServerSocket ss = new ServerSocket(10086);
? ? ? ? Socket s = ss.accept();
? ? ? ? InputStream is = s.getInputStream();
? ? ? ? byte[] b = new byte[1024];
? ? ? ? int len = is.read(b);
? ? ? ? String data = new String(b, 0, len);
? ? ? ? System.out.println(data);
? ? ? ? s.close();
? ? ? ? ss.close();
? ? }
}

執(zhí)行

分別啟動TCPTest01.java和TCPTest02.java,可在控制臺看到輸出TCP。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    這篇文章主要介紹了idea2020.1最新版永久破解/pycharm也可用,本文給大家分享簡單實現步驟,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 用html css javascript打造自己的RIA圖文教程

    用html css javascript打造自己的RIA圖文教程

    用html&css&javascript打造自己的RIA之一,包括了配置等
    2009-07-07
  • Java使用WebFlux調用大模型實現智能對話

    Java使用WebFlux調用大模型實現智能對話

    這篇文章主要為大家詳細介紹了Java如何使用WebFlux調用大模型實現智能對話效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-06-06
  • Resilience4J通過yml設置circuitBreaker的方法

    Resilience4J通過yml設置circuitBreaker的方法

    Resilience4j是一個輕量級、易于使用的容錯庫,其靈感來自Netflix Hystrix,但專為Java 8和函數式編程設計,這篇文章主要介紹了Resilience4J通過yml設置circuitBreaker的方法,需要的朋友可以參考下
    2022-10-10
  • SpringBoot詳解如何進行整合Druid數據源

    SpringBoot詳解如何進行整合Druid數據源

    Druid是阿里開發(fā)的一款開源的數據源,被很多人認為是Java語言中最好的數據庫連接池,本文主要介紹了SpringBoot整合Druid數據源的方法實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Java集合之LinkedHashSet類詳解

    Java集合之LinkedHashSet類詳解

    這篇文章主要介紹了Java集合之LinkedHashSet類詳解,LinkedHashSet 是 Java 中的一個集合類,它是 HashSet 的子類,并實現了 Set 接口,與 HashSet 不同的是,LinkedHashSet 保留了元素插入的順序,并且具有 HashSet 的快速查找特性,需要的朋友可以參考下
    2023-09-09
  • java string類方法深入解析

    java string類方法深入解析

    以下是對java中的string類方法進行了詳細的分析介紹。需要的朋友可以過來參考下
    2013-08-08
  • IDEA中Maven依賴包無法下載或導入的解決方案(系統(tǒng)缺失文件導致)

    IDEA中Maven依賴包無法下載或導入的解決方案(系統(tǒng)缺失文件導致)

    在配置Maven環(huán)境時,可能會遇到各種報錯問題,首先確保Maven路徑配置正確,例如使用apache-maven-3.5.0版本,則需要在系統(tǒng)環(huán)境變量的Path中添加其bin目錄路徑,并上移優(yōu)先級,接下來,在Maven的conf目錄下修改settings.xml文件,將鏡像源改為阿里云
    2024-09-09
  • SpringBoot攔截器的使用

    SpringBoot攔截器的使用

    這篇文章主要給大家分享的是SpringBoot攔截器的使用,攔截器通常通過動態(tài)代理的方式來執(zhí)行。攔截器的生命周期由IoC容器管理,可以通過注入等方式來獲取其他Bean的實例,使用更方便,下面文章的詳細內容,需要的朋友可以參考一下
    2021-11-11
  • vscode搭建java開發(fā)環(huán)境的實現步驟

    vscode搭建java開發(fā)環(huán)境的實現步驟

    本文主要介紹了vscode搭建java開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03

最新評論

金华市| 巴林左旗| 个旧市| 沙坪坝区| 兴化市| 改则县| 边坝县| 莲花县| 金寨县| 东光县| 东丽区| 水富县| 株洲县| 万荣县| 北票市| 泽州县| 马关县| 普陀区| 湟源县| 西平县| 南宫市| 海阳市| 吴忠市| 乌兰察布市| 江津市| 繁峙县| 黎川县| 昭通市| 门头沟区| 大悟县| 三江| 松江区| 北海市| 永仁县| 科技| 新密市| 伊金霍洛旗| 渭南市| 平乡县| 镶黄旗| 多伦县|