亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

客戶端不能將接收到信息完全打印出來,請問是怎么回事呢?(客戶端顯示在代碼后)

/*
*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();

}

}

客戶端打?。?br />

客戶端你好,你?

正在回答

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號