为了账号安全,请及时绑定邮箱和手机立即绑定

客户端不能将接收到信息完全打印出来,请问是怎么回事呢?(客户端显示在代码后)

/*
*UDP服务端
*/

package com.imooc;


import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;


public class UDPserver {

UDPserver() throws IOException{

DatagramSocket ds = new DatagramSocket(5555);

byte[] b = new byte[2048];

DatagramPacket dp = new DatagramPacket(b,0,b.length);

ds.receive(dp);

String s = new String(b);

System.out.println("我是服务器,客户端说: "+s);

InetAddress address = InetAddress.getByName("localhost");

int port = dp.getPort();

byte[] b1 = new byte[2048];

b1= "客户端你好,你的信息已经收到,我是服务器".getBytes();

DatagramPacket dp2 = new DatagramPacket(b1,0,b1.length,address,port);

ds.send(dp2);

ds.close();

}

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

UDPserver us = new UDPserver();

}

}

/*
*UDP客户端
*/

package com.imooc;


import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;


public class UDPclient {

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


DatagramSocket ds = new DatagramSocket();

InetAddress address = InetAddress.getByName("localhost");

int port = 5555;

byte[] b = new byte[2048];

b ="用户名:1;密码:2".getBytes();

DatagramPacket dp = new DatagramPacket(b,b.length,address,port);

ds.send(dp);

DatagramPacket dp1 = new DatagramPacket(b,b.length);

ds.receive(dp1);

String s1 = new String(b);

System.out.println("我是客户端,服务器说:  "+s1);

ds.close();

}

}

客户端打印:

客户端你好,你?

正在回答

4 回答

你前面那个服务器端的代码都没有放到main方法里去。

UDPserver us = new UDPserver();

你用的这种方式根本就不能够调用上面的那些方法,因为这个是创建实例对象......而你想要的是运用那些方法。

0 回复 有任何疑惑可以回复我~

接受客户端信息时:String s1 = new String(b);应该修改为String s1 = new String(b,0,dp1.getLength());

0 回复 有任何疑惑可以回复我~

byte[] b = new byte[2048];

b ="用户名:1;密码:2".getBytes();

byte[] b1 = new byte[2048];

b1= "客户端你好,你的信息已经收到,我是服务器".getBytes();

你分别给b和b1都赋值了,所以他们的长度都改变了,当你用b来接受b1时,由于b的长度比b1短,所以接收不完。

0 回复 有任何疑惑可以回复我~

System.out.println("我是服务器,客户端说: "+s);

InetAddress address = InetAddress.getByName("localhost");

int port = dp.getPort();


address 弄粗了,应该发往的地址是 InetAddress address = packet.getAddress();


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

客户端不能将接收到信息完全打印出来,请问是怎么回事呢?(客户端显示在代码后)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信