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/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

发表回复

登录后才能评论