package?pers.Sockets;
import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
import?java.net.Socket;
//?UDP服務(wù)器線程處理累
?
public?class?UDPServerThread?extends?Thread?{
DatagramPacket?packet=null;
DatagramSocket?socket=null;
byte[]?data=null;
public?UDPServerThread(DatagramPacket?packet,DatagramSocket?socket,byte[]?data){
this.packet=packet;
this.socket=socket;
this.data=data;
}
//線程執(zhí)行操作,響應(yīng)客戶端的請求
public?void?run(){
try?{
DatagramPacket??packet2=new?DatagramPacket("歡迎您!".getBytes(),?"歡迎您!".getBytes().length,?packet.getAddress(),packet.getPort());;
//4.讀取數(shù)據(jù)
String?info=new?String(data,0,packet.getLength());
System.out.println("我是服務(wù)器,客戶端說:"+info);
///****??????????向客戶端做出響應(yīng)沒有實(shí)現(xiàn),仍存在問題?????????****/
/*
?*?向客戶端做出響應(yīng)
?*/
//2.創(chuàng)建數(shù)據(jù)報、包含響應(yīng)的數(shù)據(jù)信息
/*????packet2????*/
//3.響應(yīng)客戶端
System.out.println("已響應(yīng)客戶端!"+UDPServerT.count);
socket.send(packet2);
// //4.關(guān)閉資源
// socket.close();
}?catch?(IOException?e)?{
//?TODO?自動生成的?catch?塊
e.printStackTrace();
}
}
}
2015-04-08
2015-03-27
package demostrator;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPserver {
public static void main(String[] args) throws IOException {
InetSocketAddress sd = new InetSocketAddress("localhost", 8888);
DatagramSocket socket = new DatagramSocket(sd);
System.out.println("***Server will be start!***");
while (true) {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
socket.receive(packet);
ServerThread thread = new ServerThread(packet,socket);
new Thread(thread).start();
}
}
}
package demostrator;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
class ServerThread implements Runnable{
private DatagramPacket packet = null;
private DatagramSocket socket = null;
ServerThread(DatagramPacket packet,DatagramSocket socket){
this.packet = packet;
this.socket = socket;
}
@Override
public void run() {
String info = new String(packet.getData());
//output info from client
System.out.println("i am server,client say: "+info);
InetAddress clientAddress = packet.getAddress();
int port = packet.getPort();
byte[] data1= "Welcome to server!~".getBytes();
DatagramPacket packet1 = new DatagramPacket(data1, data1.length, clientAddress, port);
try {
socket.send(packet1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*public class ServerThread extends Thread {
private DatagramPacket packet = null;
private DatagramSocket socket = null;
ServerThread(DatagramPacket packet,DatagramSocket socket){
this.packet = packet;
this.socket = socket;
}
public void run(){
String info = new String(packet.getData());
//output info from client
System.out.println("i am server,client say: "+info);
InetAddress clientAddress = packet.getAddress();
int port = packet.getPort();
byte[] data1= "Welcome to server!~".getBytes();
DatagramPacket packet1 = new DatagramPacket(data1, data1.length, clientAddress, port);
try {
socket.send(packet1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.close();
}
}*/
2015-03-20
為什么第一次客戶端運(yùn)行得不到服務(wù)器回復(fù),只有之后的能得到回復(fù),但是得到的回復(fù)貌似也有問題。。