Mardanof2
2016-04-26 18:52
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UDPCilent {
	public static void main(String[] args) {
		try {
			/*
			 * 向服务器端发送信息
			 */
			//定义服务器ip,端口,信息
			InetAddress address=InetAddress.getByName("localhost");
			int port=8000;
			byte []data="用户名:kuerban;密码:668858".getBytes();
			//建立DatagramPacket
			DatagramPacket packet=new DatagramPacket(data, 0, data.length, address, port);
			//建立DatagramSocket
			DatagramSocket socket=new DatagramSocket();
			socket.send(packet);
			
			/*
			 * 获取服务端发送信息
			 */
			//建立数据包接受信息
			byte bytes[]=new byte[1024];
			DatagramPacket packet1=new DatagramPacket(bytes, bytes.length);
			socket.receive(packet1);
			String info=new String(bytes, 0, packet1.getLength());
			System.out.println(info);
			socket.close();
		} catch (UnknownHostException | SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {			
			e.printStackTrace();
		}
	}
	
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/*
 * 服务器端,基于UDP实现用户登录
 */
public class UDPServer {
	public static void main(String[] args) {
		try {
		/*
		 * 接受信息
		 */
			
			//建立一个DatagramSocket,指定端口
			DatagramSocket socket=new DatagramSocket(8000);
			byte []bytes=new byte[1024];
			//建立一个Datagrampacket,以接受数据
			DatagramPacket packet=new DatagramPacket(bytes, bytes.length);
		/*
		 * 发送数据
		 */		
			//启动服务器
			System.out.println("服务器已启动");
			while(true){
			    socket.receive(packet);
			    //建立客户端ip,端口
				InetAddress address=packet.getAddress();
				int port=packet.getPort();
				UDPthread thread=new UDPthread(socket,packet,address,port,bytes);
				thread.start();
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPthread extends Thread{
DatagramPacket packet=null;
InetAddress address=null;
byte bytes[];
int port=0;
DatagramSocket socket=null;
public UDPthread(DatagramSocket socket,DatagramPacket packet,InetAddress address,int port,byte[] bytes) {
this.packet =packet;
this.address=address;
this.port=port;
this.socket=socket;
this.bytes=bytes;
}
public void run(){
//读取信息,输出信息
String info=new String(bytes, 0, packet.getLength());
System.out.println(info);
//建立信息,并发送
byte bytes1[]="登陆成功".getBytes();
DatagramPacket packet1=new DatagramPacket(bytes1, 0, bytes1.length,address,port);
//向客户端响应
try {
socket.send(packet1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
				DatagramPacket packet1=new DatagramPacket(bytes1, 0, bytes1.length,address,port);这里只有4个参数吧?第二个参数0是什么作用?
				     //启动服务器           
  System.out.println("服务器已启动");            
  while(true){  
      packet = new DatagramPacket(bytes, bytes.length);              
      socket.receive(packet);                
      //建立客户端ip,端口                
      InetAddress address=packet.getAddress();                
      int port=packet.getPort();                
      UDPthread thread=new UDPthread(socket,packet,address,port,bytes);               
      thread.start();           
    }
				 //启动服务器            System.out.println("服务器已启动");            while(true){                socket.receive(packet);                //建立客户端ip,端口                InetAddress address=packet.getAddress();                int port=packet.getPort();                UDPthread thread=new UDPthread(socket,packet,address,port,bytes);                thread.start();            }这里要每次new一个新的packet,即
 //启动服务器            System.out.println("服务器已启动");            while(true){               packet = new DatagramPacket(bytes, bytes.length); socket.receive(packet);                //建立客户端ip,端口                InetAddress address=packet.getAddress();                int port=packet.getPort();                UDPthread thread=new UDPthread(socket,packet,address,port,bytes);                thread.start();            }
				兄弟,我也是这个问题,你是怎么解决的?
				
0是offset是从第几个byte开始的
但你有没有看出我提出的问题
Java Socket应用---通信是这样练成的
125006 学习 · 627 问题
相似问题