java程序發送接收對象,java 對象間消息傳遞

本文目錄一覽:

Java udp如何通過一個對象完成接收和發送數據

//注意,本地ip以及埠,廣播Ip以及埠,可根據自己的電腦實際情況定.我的三段是2

//思路:我用的udp啟動服務端,進行偵聽,如果有消息,就該頻段廣播一次..

//客戶端使用多線程,一個發送服務端,一個接受廣播..就當我複習了一次…!

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.InetSocketAddress;

import java.net.SocketAddress;

import java.util.Scanner;

public class UdpTest {

class SendTest{

private int count=1;

private Scanner sc;

private byte[] by,by2; 

private InetAddress ip;

private SocketAddress sd1,sd2;

private DatagramSocket ds,ds2;

private DatagramPacket dp,dp2;

SendTest(String ipName,int port) throws Exception{

sc=new Scanner(System.in);

ip=InetAddress.getByName(ipName);

sd1=new InetSocketAddress(ip,port);//發送的目標:ip+埠

sd2=new InetSocketAddress(19823);//己方,省略ip,默認自己本地地址

ds=new DatagramSocket();//參數為自己的標識

//接受

by2=new byte[1024];

ds2=new DatagramSocket(sd2);

send();

}

private void send() throws IOException {

new Thread() {

public void run() {

while(true) {

by=sc.nextLine().getBytes();

dp=new DatagramPacket(by,by.length,sd1);//數組,數組長度,目標ip+埠

try {

ds.send(dp);

} catch (IOException e) {

e.printStackTrace();

}//推送服務;

System.out.println(“老馬第:”+count+++”條信息發送完成!”);

}

}

}.start();

new Thread() {

public void run() {

while(true) {

dp2=new DatagramPacket(by2,by2.length);

try {

ds2.receive(dp2);

System.out.println(“老馬接受到一條廣播可能來自老宋:”+new String(by2,0,dp2.getLength()));

} catch (IOException e) {

e.printStackTrace();

}

}

}

}.start();

}

}

class AccepTest{

private byte[] by; 

private SocketAddress sd1,sd2;

private DatagramSocket ds;

private DatagramPacket dp;

private int count=0;

AccepTest() throws Exception{

by=new byte[1024];

sd1=new InetSocketAddress(“192.168.2.255”,19823);//廣播

sd2=new InetSocketAddress(19822);//己方,省略ip,默認自己本地地址

ds=new DatagramSocket(sd2);//參數為自己的標識,這是用來接受的…..

accepts();

}

private void accepts() throws IOException {

while(true) {

count++;

System.out.println(“老宋的伺服器接受第:”+count+”次數據:…”);

dp=new DatagramPacket(by,by.length);//數組,數組長度,僅僅用來接收;

ds.receive(dp); //接受服務;

String str=new String(by,0,dp.getLength());

System.out.println(“老宋接受到數據———“+str);

System.out.println();

//廣播..

by=(“插個廣播:”+str+”….誰發的??”).getBytes();

dp=new DatagramPacket(by,by.length,sd1);

ds.send(dp);

}

}

}

public static void main(String[] args) throws Exception {

new Thread() {

public void run() {

try {

new UdpTest().new AccepTest();

} catch (Exception e) {

e.printStackTrace();

}

}

}.start();

new Thread() {

public void run() {

try {

new UdpTest().new SendTest(“127.0.0.1”,19822);

} catch (Exception e) {

e.printStackTrace();

}

}

}.start();

}

}

能夠使用java的UDP介面傳遞和接收對象嗎

可以做到

//對像變成節數組

ByteArrayOutputStream buffers = new ByteArrayOutputStream();

try{

ObjectOutputStream out = new ObjectOutputStream(buffers);

out.writeObject(你的對像變數);

out.close();

}catch(Exception e){

System.err.print(e.getMessage());

return null;

}

return buffers.toByteArray();//這裡返回的就是你對像的位元組數組了

//位元組數組還原為對像

data[]=…..

你對像的類型 obj;

try{

ByteArrayInputStream buffers = new ByteArrayInputStream(data);

ObjectInputStream in = new ObjectInputStream(buffers);

obj=(你對像的類型) in.readObject(); //obj就是你還原回來的對像了

in.close();

}catch(Exception e){

System.err.print(e.getMessage());

}

用JAVA寫一個SOCKET 接收TCP發來的消息

public class TalkServer{

public static void main(String args[]) {

try{

ServerSocket server=null;

try{

server=new ServerSocket(4700);

//創建一個ServerSocket在埠4700監聽客戶請求

}catch(Exception e) {

System.out.println(“can not listen to:”+e);

//出錯,列印出錯信息

}

Socket socket=null;

try{

socket=server.accept();

//使用accept()阻塞等待客戶請求,有客戶

//請求到來則產生一個Socket對象,並繼續執行

}catch(Exception e) {

System.out.println(“Error.”+e);

//出錯,列印出錯信息

}

String line;

BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));

 //由Socket對象得到輸入流,並構造相應的BufferedReader對象

PrintWriter os=newPrintWriter(socket.getOutputStream());

 //由Socket對象得到輸出流,並構造PrintWriter對象

BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));

 //由系統標準輸入設備構造BufferedReader對象

System.out.println(“Client:”+is.readLine());

//在標準輸出上列印從客戶端讀入的字元串

line=sin.readLine();

//從標準輸入讀入一字元串

while(!line.equals(“bye”)){

//如果該字元串為 “bye”,則停止循環

os.println(line);

//向客戶端輸出該字元串

os.flush();

//刷新輸出流,使Client馬上收到該字元串

System.out.println(“Server:”+line);

//在系統標準輸出上列印讀入的字元串

System.out.println(“Client:”+is.readLine());

//從Client讀入一字元串,並列印到標準輸出上

line=sin.readLine();

//從系統標準輸入讀入一字元串

}  //繼續循環

os.close(); //關閉Socket輸出流

is.close(); //關閉Socket輸入流

socket.close(); //關閉Socket

server.close(); //關閉ServerSocket

}catch(Exception e){

System.out.println(“Error:”+e);

//出錯,列印出錯信息

}

}

}

java怎麼接受對象作為參數的方法?

對象做參數,傳過去的是地址。 所以你在你調用的方法裡面可以修改對象的某些屬性(值),基本數據類型就不可以。Java中數組也是傳遞地址的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/206801.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-08 14:17
下一篇 2024-12-08 14:17

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29

發表回復

登錄後才能評論