⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpclient.java

📁 自己写的
💻 JAVA
字号:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.regex.Pattern;

public class UDPClient implements Runnable{

	//服务器端
	SocketAddress server;
	
	DatagramSocket ds;	
	byte[] buffer = new byte[1024];
	DatagramPacket rec;
	
	String clienthost;
	int clientport;
 	
	public static void main(String[] args) throws Exception {
		UDPClient client = new UDPClient();
		client.server = new InetSocketAddress("localhost", 2008);
		client.start();
	}

	public void start() throws Exception {
		System.out.println("start");
		ds = new DatagramSocket();
		rec = new DatagramPacket(buffer, 1024);
		//发送本机信息
		String msg = "register " + InetAddress.getLocalHost().getHostAddress() + " " + ds.getLocalPort();
		ds.send(new DatagramPacket(msg.getBytes(), msg.getBytes().length, server));
		//接收另一节点信息
  		System.out.println("正在接收信息");
  		ds.receive(rec);
  		System.out.println("收到信息");
  		String line = "来自:"+rec.getSocketAddress() + "信息:" + rec.getData();
  		System.out.println(line);
  		
  		
		//send
		new Thread(this).start();
		//receive
		receive();
	}

	public void receive() {
  		while(true) {
  			try {
  				System.out.println("正在接收信息");
  				ds.receive(rec);
  				System.out.println("收到信息");
  				String line = "来自:"+rec.getSocketAddress() + "信息:" + rec.getData();
  				System.out.println(line);
  			} 
  			catch (Exception e) {
  				e.printStackTrace();
  			}
  		}
 	}

	public void run() {
 		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
 		try {
 			System.out.print("请输入命令:");
 			String line = reader.readLine();
 			while (!"exit".equals(line)) {
 				doCommand(line);
 				System.out.print("请输入命令:");
 				line = reader.readLine();
 			}
 		} 
 		catch (Exception e) {
 			e.printStackTrace();
 		}
 	}
	
	public void doCommand(String cmd) throws Exception {
 			
 			InetSocketAddress target = new InetSocketAddress(clienthost, clientport);
 			byte[] bs = cmd.getBytes();
 			ds.send(new DatagramPacket(bs, bs.length, target));
 			
 	}

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -