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

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

UDP服務(wù)器接受多個(gè)客服端。

package?com.guoke2;

import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
import?java.net.Socket;
import?java.net.SocketException;

/**?*?@author??guokewind?
?*?@date?創(chuàng)建時(shí)間:2015年6月1日?下午6:28:05?
?*?@version?
?*?@parameter??
?*?@since??
?*?@return??*/
public?class?Server?{
	public?static?void?main(String[]?args)?{
		try?{
			//1.創(chuàng)建服務(wù)器DatagramSocket
			DatagramSocket?socket=new?DatagramSocket(8800);
			System.out.println("****服務(wù)器已經(jīng)啟動(dòng),等待客戶(hù)端連接");
			//2.創(chuàng)建數(shù)據(jù)包,用于接收客戶(hù)端發(fā)送的數(shù)據(jù)
			while(true){
				byte?[]?data=?new?byte[1024];
				DatagramPacket?packet=new?DatagramPacket(data,?data.length);
				//3.接收客戶(hù)端發(fā)送的數(shù)據(jù)
				socket.receive(packet);
				ServerThread?serverThread=new?ServerThread(socket,packet);
				serverThread.start();
				}
		}?
		catch?(SocketException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}			catch?(IOException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
	}
}
package?com.guoke2;

import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
import?java.net.SocketException;

/**?*?@author??guokewind?
?*?@date?創(chuàng)建時(shí)間:2015年6月1日?下午7:16:08?
?*?@version?
?*?@parameter??
?*?@since??
?*?@return??*/
public?class?ServerThread?extends?Thread?{
	private?DatagramSocket?socket;
	private?DatagramPacket?packet;
	/*
	?*?通過(guò)構(gòu)造方法把套接字和數(shù)據(jù)包傳過(guò)來(lái),不要傳byte?[]?data,
	?*?用packet.getData()體現(xiàn)數(shù)據(jù)是通過(guò)數(shù)據(jù)包傳送過(guò)來(lái)的?
	?*/
	public?ServerThread(DatagramSocket?socket,DatagramPacket?packet){
		this.socket=socket;
		this.packet=packet;
	}
	@Override
	public?void?run()?{
		//?TODO?Auto-generated?method?stub
		super.run();
		try{
			byte?[]?data=packet.getData();//返回?cái)?shù)據(jù)緩沖區(qū)
			String?info=new?String(data,0,packet.getLength());
			System.out.println("我是服務(wù)器"+Thread.currentThread()+",客戶(hù)端說(shuō):"+info);
			InetAddress?address?=packet.getAddress();//得到主機(jī)的地址
			int?port=packet.getPort();//返回某臺(tái)遠(yuǎn)程主機(jī)的端口號(hào)
			byte?[]data2="歡迎您!".getBytes();
			DatagramPacket?packet2=new?DatagramPacket(data2,?data2.length,address,port);//發(fā)送data2到主機(jī)
			socket.send(packet2);
		}?catch?(SocketException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}			catch?(IOException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
		
	}
}


正在回答

5 回答

http://img1.sycdn.imooc.com//57bbc46f0001c8a305690117.jpg

為什么構(gòu)造方法中沒(méi)有傳入data,這個(gè)地方創(chuàng)建線(xiàn)程的時(shí)候?yàn)槭裁纯梢詡魅???/p>

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

風(fēng)中過(guò)客 提問(wèn)者

哈哈, 那個(gè)啥, 請(qǐng)忽略掉那個(gè)data
2016-08-25 回復(fù) 有任何疑惑可以回復(fù)我~

try?{

????????????//1.創(chuàng)建服務(wù)器DatagramSocket

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

????????????System.out.println("****服務(wù)器已經(jīng)啟動(dòng),等待客戶(hù)端連接");

????????????//2.創(chuàng)建數(shù)據(jù)包,用于接收客戶(hù)端發(fā)送的數(shù)據(jù)

????????????while(true){

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

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

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

????????????????socket.receive(packet);

????????????????ServerThread?serverThread=new?ServerThread(socket,packet,data);

????????????????serverThread.start();

????????????????}

????????}?

為什么把?DatagramPacket?packet=new?DatagramPacket(data,?data.length);

寫(xiě)在while循環(huán)外就不行,我寫(xiě)在上面一直不行,看你這么寫(xiě)改了竟然就可以了。。。

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

?不可以用多線(xiàn)程嗎?

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

1,需要手動(dòng)關(guān)閉的

2,packet返回的字節(jié)數(shù)組不一定全部用完了,因此要通過(guò)packet.getLength()方法構(gòu)造一個(gè)String,可以這樣寫(xiě)

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

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

問(wèn)題1. 當(dāng)客戶(hù)端的數(shù)據(jù)報(bào)發(fā)送完畢,客戶(hù)端創(chuàng)建的DatagramSocket是否需要關(guān)閉(手動(dòng)的)?

問(wèn)題2. run方法中的 讀取來(lái)自客戶(hù)端的數(shù)據(jù)報(bào)里面的數(shù)據(jù),為什么不直接

???????? ? String Info = new String(packet.getData());

????? ? ? ?而是 先寫(xiě)到一個(gè)臨時(shí)數(shù)組里面,然后去讀那個(gè)數(shù)組里面的東西,有點(diǎn)多此一舉的感覺(jué)?

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

舉報(bào)

0/150
提交
取消

UDP服務(wù)器接受多個(gè)客服端。

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

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

幫助反饋 APP下載

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

公眾號(hào)

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