第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

關(guān)于在UDP多線程獲取IP地址無效的問題

public class UDPserver {


? ? /**

? ? ?* @param args the command line arguments

? ? ?*/

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

? ? ? ? // TODO code application logic here

? ? ? ? //創(chuàng)建服務(wù)器端DatagramSocket,指定端口(大于1024的端口)

? ? ? ? DatagramSocket socket = new DatagramSocket(8800);

? ? ? ? UDPserverThread thread = null;

? ? ? ? DatagramPacket packet = null;

? ? ? ? int count = 0;

? ? ? ? byte[] data = new byte[1024];

? ? ? ? while (true) {

? ? ? ? ? ??

? ? ? ? ? ? packet = new DatagramPacket(data, data.length);

? ? ? ? ? ? System.out.println("服務(wù)器端等待ing");

? ? ? ? ? ? ? ?//接收客戶端發(fā)送的數(shù)據(jù)

? ? ? ? ? ? socket.receive(packet);//此方法在接收到數(shù)據(jù)報(bào)之前會(huì)一直阻塞

? ? ? ? ? ? thread = new UDPserverThread(socket,packet);

? ? ? ? ? ? thread.start();

? ? ? ? ? ? count++;

? ? ? ? ? ? System.out.println("客戶端的數(shù)量:" + count);

// ? ? ? ? ? ?InetAddress address = socket.getInetAddress();

// ? ? ? ? ? ?System.out.println("當(dāng)前客戶端的IP:" + address.getHostAddress());

// ? ? ? ? ? ?if(socket!=null)

// ? ? ? ? ? ?socket.close();

? ? ? ? }


? ? }



public class UDPserverThread extends Thread {


? ? /**

? ? ?* 通過多線程實(shí)現(xiàn)多用戶鏈接

? ? ?* @param args the command line arguments

? ? ?*/

? ? DatagramSocket socket=null;

? ? DatagramPacket packet=null;


? ? public ?UDPserverThread(DatagramSocket socket,DatagramPacket packet){

? ? ? ? this.socket=socket;

? ? ? ? ? ? //創(chuàng)建數(shù)據(jù)報(bào),用于接收客戶端發(fā)送的數(shù)據(jù)

? ? ? ? this.packet=packet;

? ? }

? ??

? ??

? ??

? ??

? ? @Override

? ? public void run() {

? ? ? ??

? ? ? ??

? ? ? ? try {

? ? ? ? ? ? //接收信息

? ? ? ? ? ??

? ? ? ? ? ??

? ? ? ? ? ? byte[] data=packet.getData();

? ? ? ? ? ??

? ? ? ? ?

? ? ? ? ? ? //讀取數(shù)據(jù)

? ? ? ? ? ? String info = new String(data, 0, packet.getLength());

? ? ? ? ? ? System.out.println("----服務(wù)器端---接收客戶端消息:" + info);

? ? ? ? ? ??

? ? ? ? ? ? //響應(yīng)信息

? ? ? ? ? ??

? ? ? ? ? ? //定義客戶端的地址、端口號(hào)、數(shù)據(jù)

? ? ? ? ? ? InetAddress address =packet.getAddress();

? ? ? ? ? ? int port=packet.getPort();

? ? ? ? ? ? byte[] data2="歡迎你".getBytes();

? ? ? ? ? ? //創(chuàng)建數(shù)據(jù)報(bào),包含響應(yīng)的數(shù)據(jù)信息

? ? ? ? ? ? DatagramPacket packet2=new DatagramPacket(data2, data2.length, address, port);

? ? ? ? ? ? //響應(yīng)客戶端

? ? ? ? ? ? socket.send(packet2);

? ? ? ? ? ? //關(guān)閉資源

? ? ? ? ? ??

? ? ? ? } catch (SocketException ex) {

? ? ? ? ? ? Logger.getLogger(UDPserverThread.class.getName()).log(Level.SEVERE, null, ex);

? ? ? ? } catch (IOException ex) {

? ? ? ? ? ? Logger.getLogger(UDPserverThread.class.getName()).log(Level.SEVERE, null, ex);

? ? ? ? }

? ? ? ??

? ? }

}


public class UDPClient {


? ? /**

? ? ?* @param args the command line arguments

? ? ?*/

? ? public static void main(String[] args) throws UnknownHostException, SocketException, IOException {

//定義服務(wù)器的地址、端口號(hào)、數(shù)據(jù)

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

? ? ? ? int port = 8800;

? ? ? ? byte[] data = "用戶名:admin;密碼:32001".getBytes();

? ? ? ? //創(chuàng)建數(shù)據(jù)報(bào),包含發(fā)送的數(shù)據(jù)信息

? ? ? ? DatagramPacket packet = new DatagramPacket(data, data.length, address, port);

? ? ? ? //創(chuàng)建DatagramSocket對(duì)象

? ? ? ? DatagramSocket socket = new DatagramSocket();

? ? ? ? //向服務(wù)器端發(fā)送數(shù)據(jù)報(bào)

? ? ? ? socket.send(packet);


? ? ? ? //接收響應(yīng)的信息

? ? ? ? //創(chuàng)建數(shù)據(jù)報(bào)接收服務(wù)器端響應(yīng)的數(shù)據(jù)

? ? ? ? byte[] data2 = new byte[1024];

? ? ? ? DatagramPacket packet2 = new DatagramPacket(data2, data2.length);

? ? ? ? socket.receive(packet2);

? ? ? ? String info = new String(data2, 0, packet2.getLength());

? ? ? ? System.out.println("----客戶端---接收服務(wù)器端消息:" + info);

? ? ? ? socket.close();


? ? }


}

在服務(wù)器端中我打算模仿TCP獲取客戶端的IP,但是那幾句不注釋掉(就是一開始socket.getInetAddress那里4行)就會(huì)出現(xiàn)nullpointerException,沒有獲取到IP地址,請(qǐng)問是什么原因呢?除了這幾行之外都能正常運(yùn)行的

正在回答

1 回答

好吧,把socket換成packet就可以了,我對(duì)象理解錯(cuò)了

還有服務(wù)器端的socket不能關(guān)閉

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java Socket應(yīng)用---通信是這樣練成的
  • 參與學(xué)習(xí)       125006    人
  • 解答問題       627    個(gè)

分享的是 Java 中的網(wǎng)絡(luò)編程,使用Socket實(shí)現(xiàn)網(wǎng)絡(luò)聊天通信

進(jìn)入課程

關(guān)于在UDP多線程獲取IP地址無效的問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)