Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.175.201.245] |
|
Сообщ.
#1
,
|
|
|
Приветствую!
Сення помогал другану сдать зачет. И стукнуло ему в 42 года восстановиться в институт ... Вощем не судите строго, написал на Джаве свой первый софт, друган зачет сдал на отличненько. Мож кому еще пригодится. Суть Клиент запрашивает три параметра (byte) и пересылает по UDP их серверу. Сервер принимает, считает по адовой формуле и возвращает результат (double). Реализация моя ниже: Сервер: import java.net.*; import java.io.*; import java.util.*; import java.nio.ByteBuffer; import java.lang.Math; public class UDPServer { public UDPServer() { try { System.out.println("Ожидаю пакет ..."); DatagramSocket ds=new DatagramSocket(61); while (true) { byte Data[]=new byte[3]; DatagramPacket dp = new DatagramPacket(Data, 3); ds.receive(dp); int clientPort=dp.getPort(); InetAddress clientAddress=dp.getAddress(); System.out.println("Получено:"); System.out.println(" X = "+Data[0]); System.out.println(" Y = "+Data[1]); System.out.println(" Z = "+Data[2]); double X = Data[0]; double Y = Data[1]; double Z = Data[2]; double Result = Math.pow(Math.abs(Math.cos(X)-Math.exp(Y)),1-2*Math.pow(Math.log(Y),2))*(1+Z+(Math.pow(Z,2)/2)+(Math.pow(Z,3)/3)); byte Res[]=new byte[8]; ByteBuffer.wrap(Res).putDouble(Result); dp = new DatagramPacket(Res, 8, clientAddress, clientPort); System.out.println("Отсылаю результат: "+Result); ds.send(dp); PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8"); writer.println("X = "+X); writer.println("Y = "+Y); writer.println("Z = "+Z); writer.println("Func = "+Result); writer.close(); } } catch(Exception exc) { exc.printStackTrace(); } } public static void main(String[] args) { UDPServer udpServer = new UDPServer(); } } Клиент: import java.net.*; import java.nio.ByteBuffer; import java.io.Console; public class UDPClient { public UDPClient(String server) { try { DatagramSocket ds = new DatagramSocket(); byte data[]=new byte[3]; Console console = System.console(); data[0] = Byte.valueOf(console.readLine("Введите X: ")); data[1] = Byte.valueOf(console.readLine("Введите Y: ")); data[2] = Byte.valueOf(console.readLine("Введите Z: ")); DatagramPacket dp=new DatagramPacket(data, 3, InetAddress.getByName(server), 61); ds.send(dp); byte buffer[]=new byte[8]; dp=new DatagramPacket(buffer, 8); ds.receive(dp); double Result = ByteBuffer.wrap(buffer).getDouble(); System.out.print("Получен результат: "+Result); } catch(Exception exc) { exc.printStackTrace(); } } public static void main(String[] args) { //при запуске указать доменное имя UDPClient udpClient = new UDPClient(args[0]); //сервера } } |