computer_server.java

来自「了解UDP的通信原理」· Java 代码 · 共 62 行

JAVA
62
字号
import java.io.*;import java.net.*;
import java.util.*;import java.sql.*;
class UDPServerThread extends Thread{
	//启动服务器线程的主程序
	private DatagramPacket packet;
	private DatagramSocket socket;
	static final int sport=4331;
	UDPServerThread(){
		try{
			socket=new DatagramSocket(sport);//将socket连接到本地端口4331
			System.out.println("I am waitting....");
		}
		catch(Exception e ){System.out.println("错误"+e);}
	}
	public void run(){
		//线程操作
		if(socket==null) return;
		while(true){
			try{
				InetAddress addr; int cport;
				byte[] buffer1=new byte[1000]; byte[] buffer2=new byte[1000];
				String s="数据报已经接受到";
				packet=new DatagramPacket(buffer1,buffer1.length);//生成一个接收数据报
				socket.receive(packet);//接收收据报
				String s1=new String(packet.getData());
				System.out.println("从客户端收到的数据是:"+s1);
				addr=packet.getAddress();
				cport=packet.getPort();
				double a[]=new double[3] ;int i=0;
				StringTokenizer fenxi=new StringTokenizer(s1," ,");
	            while(fenxi.hasMoreTokens())
	             	{  String temp=fenxi.nextToken();
	                   try{  a[i]=Double.valueOf(temp).doubleValue();i++;
	                      }
	                   catch(NumberFormatException e)
	                     {  
	                      }
	                }
	             double p=(a[0]+a[1]+a[2])/2.0;
	            Double result=new Double(Math.sqrt(p*(p-a[0])*(p-a[1])*(p-a[2])));
	            String bytes=new String(result.toString());
	            buffer2=bytes.getBytes();
	            packet=new DatagramPacket(buffer2,buffer2.length,addr,cport);//生成发送的数据报
	            socket.send(packet);
	             sleep(2);    
			}
			catch(Exception ee){}
		}
	}
	protected void finalize(){
		if(socket!=null){
			socket.close();//关闭socket
			System.out.println("连接已经关闭");
		}
	}
}
public class Computer_server{
	public static void main(String[] argc){
		UDPServerThread server=new UDPServerThread();
		server.start();
	}
}

⌨️ 快捷键说明

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