java的UDP通信中,怎么从服务器端获取文本文件内容并显示在组件上

java的UDP通信中,怎么从服务器端获取文本文件内容并显示在组件上,第1张

1:客户端程序

[java] view plain copy

package com.pb.udp

import java.io.IOException

import java.net.DatagramPacket

import java.net.InetAddress

import java.net.UnknownHostException

import java.net.DatagramSocket

/**

* 使用Sender类来代表客户端程序,

* @author ccna_zhang

*

*/

public class Sender {

public static void main(String[] args) {

String msg = "Hello, World"

byte[] buf = msg.getBytes()

try {

InetAddress address = InetAddress.getByName("192.168.1.80") //服务器地址

int port = 8080 //服务器的端口号

//创建发送方的数据报信息

DatagramPacket dataGramPacket = new DatagramPacket(buf, buf.length, address, port)

DatagramSocket socket = new DatagramSocket() //创建套接

socket.send(dataGramPacket) //通过套接字发送数据

//接收服务器反馈数据

byte[] backbuf = new byte[1024]

DatagramPacket backPacket = new DatagramPacket(backbuf, backbuf.length)

socket.receive(backPacket) //接收返回数据

String backMsg = new String(backbuf, 0, backPacket.getLength())

System.out.println("服务器返回的数据为:" + backMsg)

socket.close()

} catch (UnknownHostException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

}

}

}

2:服务器端程序

[java] view plain copy

package com.pb.udp

import java.io.IOException

import java.net.DatagramPacket

import java.net.DatagramSocket

import java.net.InetAddress

import java.net.SocketAddress

import java.net.UnknownHostException

/**

* 服务器端程序

* @author ccna_zhang

*

*/

public class Receiver {

public static void main(String[] args) {

try {

InetAddress address = InetAddress.getLocalHost()

int port = 8080

//创建DatagramSocket对象

DatagramSocket socket = new DatagramSocket(port, address)

byte[] buf = new byte[1024] //定义byte数组

DatagramPacket packet = new DatagramPacket(buf, buf.length) //创建DatagramPacket对象

socket.receive(packet) //通过套接字接收数据

String getMsg = new String(buf, 0, packet.getLength())

System.out.println("客户端发送的数据为:" + getMsg)

//从服务器返回给客户端数据

InetAddress clientAddress = packet.getAddress()//获得客户端的IP地址

int clientPort = packet.getPort()//获得客户端的端口号

SocketAddress sendAddress = packet.getSocketAddress()

String feedback = "Received"

byte[] backbuf = feedback.getBytes()

DatagramPacket sendPacket = new DatagramPacket(backbuf, backbuf.length, sendAddress)//封装返回给客户端的数据

socket.send(sendPacket) //通过套接字反馈服务器数据

socket.close() //关闭套接字

} catch (UnknownHostException e) {

e.printStackTrace()

} catch(IOException e) {

e.printStackTrace()

}

}

}

3:程序运行结果

服务器端:

客户端发送的数据为:Hello, World

客户端:

服务器返回的数据为:Received

下回最好把图片拍清楚点,根本看不清你的代码。输出的信息后面有乱码,一般都是有无效数据导致的,猜测是你开的buffer太大了,udp消息没有填满它,你也没有判断receive的数据长度就把整个buffer全输出了,所以后面会有一块无效数据形成乱码。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/327970.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存