淺談java的TCP和UDP編程(附實(shí)例講解)
TCP
客戶端:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class MyClient { public static void main(String[] args) throws Exception{ Socket socket = null; BufferedReader in = null; PrintWriter out = null; BufferedReader input = null; // 請(qǐng)求指定ip和端口號(hào)的服務(wù)器 socket = new Socket("127.0.0.1",3333); while(true){ in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(), true); // 接收控制臺(tái)的輸入 input = new BufferedReader(new InputStreamReader(System.in)); // out.println("this is client info!"); String info = input.readLine(); out.println(info); String str = in.readLine(); System.out.println("客戶端顯示--》服務(wù)器的信息:" + str); } //in.close(); //out.close(); } }
服務(wù)端:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MyServices { public static void main(String[] args) throws Exception{ ServerSocket ss = null; Socket socket = null; BufferedReader in = null; PrintWriter out = null; BufferedReader input = null; // 監(jiān)聽3333端口 ss = new ServerSocket(3333); // 等待接收客戶端的請(qǐng)求 socket = ss.accept(); while(true){ // 獲取連接對(duì)象的輸入流 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 獲取客戶端的輸入信息 String str = in.readLine(); input = new BufferedReader(new InputStreamReader(System.in)); System.out.println("服務(wù)器顯示-->客戶端輸入數(shù)據(jù):" + str); out = new PrintWriter(socket.getOutputStream(),true); // 將數(shù)據(jù)輸出到客戶端 // out.println("hehe"); String info = input.readLine(); out.println(info); } // in.close(); // out.flush(); // out.close(); } }
UDP
客戶端:
import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPClient { public static void main(String[] args) throws Exception { DatagramSocket ds = null; DatagramPacket dp = null; byte[] buf = new byte[1024]; ds = new DatagramSocket(3333); dp = new DatagramPacket(buf, 1024); // 接收數(shù)據(jù),放入數(shù)據(jù)報(bào) ds.receive(dp); // 從數(shù)據(jù)報(bào)中取出數(shù)據(jù) String info = new String(dp.getData(),0, dp.getLength()); System.out.println("接收到的信息是:" + info); } }
服務(wù)端:
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPServer { public static void main(String[] args) throws Exception { DatagramSocket ds = null; DatagramPacket dp = null; // 構(gòu)建發(fā)送對(duì)象 ds = new DatagramSocket(); // 將數(shù)據(jù)打包-->打成數(shù)據(jù)報(bào) String info = "hello world!"; dp = new DatagramPacket(info.getBytes(), info.length(), InetAddress.getByName("localhost"),3333); // 發(fā)出數(shù)據(jù)報(bào) ds.send(dp); } }
以上這篇淺談java的TCP和UDP編程(附實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信)
- java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析
- Java模擬UDP通信示例代碼
- Java實(shí)現(xiàn)UDP通信過程實(shí)例分析【服務(wù)器端與客戶端】
- java UDP通信客戶端與服務(wù)器端實(shí)例分析
- Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽
- java基于UDP實(shí)現(xiàn)圖片群發(fā)功能
- Java編程使用UDP建立群聊系統(tǒng)代碼實(shí)例
- 基于Java中UDP的廣播形式(實(shí)例講解)
- Java NIO實(shí)例UDP發(fā)送接收數(shù)據(jù)代碼分享
- java 多線程實(shí)現(xiàn)在線咨詢(udp)
相關(guān)文章
Java Web開發(fā)中過濾器和監(jiān)聽器使用詳解
這篇文章主要為大家詳細(xì)介紹了Java中的過濾器Filter和監(jiān)聽器Listener的使用以及二者的區(qū)別,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-10-10如何取消IDEA中的項(xiàng)目和Git倉(cāng)庫(kù)的關(guān)聯(lián)
這篇文章介紹了一種取消已經(jīng)開啟代碼控制的項(xiàng)目與Git倉(cāng)庫(kù)關(guān)聯(lián)的簡(jiǎn)單方法,首先,在IntelliJ IDEA中打開項(xiàng)目,刪除.idea目錄下的vcs.xml文件,這樣IDE界面上的Git圖標(biāo)就會(huì)消失,接下來,打開項(xiàng)目所在位置,通過文件管理器啟用“顯示隱藏的項(xiàng)目”選項(xiàng)2024-10-10Java?Mybatis的初始化之Mapper.xml映射文件的詳解
這篇文章主要介紹了Java?Mybatis的初始化之Mapper.xml映射文件的詳解,解析完全局配置文件后接下來就是解析Mapper文件了,它是通過XMLMapperBuilder來進(jìn)行解析的2022-08-08Spring中AOP概念與兩種動(dòng)態(tài)代理模式原理詳解
AOP是面向切面編程的技術(shù),AOP基于IoC基礎(chǔ),是對(duì)OOP的有益補(bǔ)充,流行的AOP框架有Sping AOP、AspectJ,這篇文章主要給大家介紹了關(guān)于Spring中AOP概念與兩種動(dòng)態(tài)代理模式原理的相關(guān)資料,需要的朋友可以參考下2021-10-10SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解
這篇文章主要介紹了SpringBoot Tomcat啟動(dòng)實(shí)例代碼詳解,需要的朋友可以參考下2017-09-09SpringBoot項(xiàng)目實(shí)現(xiàn)關(guān)閉數(shù)據(jù)庫(kù)配置和springSecurity
這篇文章主要介紹了SpringBoot項(xiàng)目實(shí)現(xiàn)關(guān)閉數(shù)據(jù)庫(kù)配置和springSecurity的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08IDEA中配置多個(gè)版本的JDK的實(shí)現(xiàn)示例
IDEA可以配置多個(gè)JDK,根據(jù)需要使用不同版本的,本文就來介紹一下IDEA中配置多個(gè)版本的JDK的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03搭建一個(gè)基礎(chǔ)的Resty項(xiàng)目框架
這篇文章主要為大家介紹了如何搭建一個(gè)基礎(chǔ)的Resty項(xiàng)目框架示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03