關(guān)于udp使用多線程實現(xiàn)多客戶端請問人寫出來嗎?按照之前的tcp那種寫法不成功啊
如題,因為packet傳到線程里后不起作用啊,測了下,不為空,但它的方法都用不了啊,有誰知道嗎。老師沒講這個網(wǎng)上查到的資料也很有顯。幕課之前也有人問同樣的問題,但并沒有回答
如題,因為packet傳到線程里后不起作用啊,測了下,不為空,但它的方法都用不了啊,有誰知道嗎。老師沒講這個網(wǎng)上查到的資料也很有顯。幕課之前也有人問同樣的問題,但并沒有回答
2016-04-11
舉報
2016-08-05
2016-07-06
public class UdpSocketMilServerDemo {
public static void main(String[] args) {
DatagramSocket socket = null;
try {
/*
* 接受客戶端發(fā)送到服務(wù)器的數(shù)據(jù)信息
*/
int count = 0;
//創(chuàng)建DatagramSocket,指定端口
socket = new DatagramSocket(8800);
while(true){
//創(chuàng)建DatagramPacket,用于存儲客戶端發(fā)送的信息
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
//接受從客戶端發(fā)送來的請求信息,并存儲在DatagramPacket中
socket.receive(packet);
UdpThread thread = new UdpThread(socket, data, packet);
thread.start();
count++;
System.out.println("總共有"+count+"個用戶登錄");
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
socket.close();
}
}
}
public class UdpThread extends Thread {
private DatagramSocket socket;
private byte[] data;
private DatagramPacket packet;
public UdpThread(DatagramSocket socket,byte[] data,DatagramPacket packet){
this.socket = socket;
this.data = data;
this.packet = packet;
}
@Override
public void run() {
try {
//讀取獲取到的客戶信息
String info = new String(data, 0, packet.getLength());
System.out.println("我是服務(wù)端,客戶端說:"+info);
/*?
?* 對客戶端的請求進行響應(yīng)
?*/
?
//獲取客戶端主機信息和定義要響應(yīng)的信息
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data2 = "歡迎您!".getBytes();
//定義一個DatagramPaket,用戶存放響應(yīng)信息
DatagramPacket responsePacket = new DatagramPacket(data2, data2.length, address, port);
//發(fā)送響應(yīng)信息
socket.send(responsePacket);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2016-06-28
我的也不行,運行不出來。有沒有源代碼參考一下
2016-06-20
可以發(fā)一下源代碼參考一下?
2016-04-13
感覺因為現(xiàn)在人數(shù)多了還是怎么的,幕課網(wǎng)現(xiàn)在都已經(jīng)沒老師來回答問題了,以前的時候人發(fā)問題總有。唉,現(xiàn)在就只剩些學生互相猜解了。
2016-04-13
額,我已經(jīng)找到答案了,udp的datagrampacket接受數(shù)據(jù)只能用一個線程接收。所以要先接受后將數(shù)據(jù)提交線程池處理即可
2016-04-12
同問!