package?pers.Sockets;
import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
import?java.net.Socket;
//?UDP服務器線程處理累
?
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;
}
//線程執行操作,響應客戶端的請求
public?void?run(){
try?{
DatagramPacket??packet2=new?DatagramPacket("歡迎您!".getBytes(),?"歡迎您!".getBytes().length,?packet.getAddress(),packet.getPort());;
//4.讀取數據
String?info=new?String(data,0,packet.getLength());
System.out.println("我是服務器,客戶端說:"+info);
///****??????????向客戶端做出響應沒有實現,仍存在問題?????????****/
/*
?*?向客戶端做出響應
?*/
//2.創建數據報、包含響應的數據信息
/*????packet2????*/
//3.響應客戶端
System.out.println("已響應客戶端!"+UDPServerT.count);
socket.send(packet2);
// //4.關閉資源
// 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
為什么第一次客戶端運行得不到服務器回復,只有之后的能得到回復,但是得到的回復貌似也有問題。。