/* * TurnServer, the OpenSource Java Solution for TURN protocol. Maintained by the * Jitsi community (http://jitsi.org). * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jitsi.turnserver.turnClient; import java.io.*; import java.net.*; import org.ice4j.*; /** * An interactive UDP peer client to send messages. * @author Aakash Garg * */ public class InteractiveUdpPeer { private static DatagramSocket sock; private static int serverPort = 8080; // private static int serverPort = 49152; private static int clientPort = 11000; /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String[] temp = {InetAddress.getLocalHost().toString(),""+clientPort}; if(args.length == 0) { args = temp; } TransportAddress serverAddr = null; TransportAddress clientAddr = null; if(args.length==2) { serverAddr = new TransportAddress(args[0], Integer.parseInt(args[1]),Transport.UDP); clientAddr = new TransportAddress(InetAddress.getLocalHost(), 12000,Transport.UDP); } else if(args.length==4) { serverAddr = new TransportAddress(args[0], Integer.parseInt(args[1]),Transport.UDP); serverPort = Integer.parseInt(args[1]); clientAddr = new TransportAddress(args[2], Integer.parseInt(args[3]), Transport.UDP); clientPort = Integer.parseInt(args[3]); } else { throw new IllegalArgumentException("Please enter valid arguments."); } sock = new DatagramSocket(clientPort,InetAddress.getLocalHost()); /* Thread recThread = getRecThread(); recThread.start(); */ /* FileReader fr = new FileReader( "D:\\Eclipse\\turnserver\\samoleInputFile.txt"); */ //BufferedReader br = new BufferedReader(fr); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; System.out.println("Start typing message."); while((line = br.readLine())!=null) { byte[] data = line.getBytes(); DatagramPacket pkt = new DatagramPacket(data, data.length, InetAddress.getLocalHost(), serverPort); sock.send(pkt); System.out.println("Sent : "+line); byte[] receiveData = new byte[1024]; DatagramPacket recPkt = new DatagramPacket(receiveData, receiveData.length); sock.receive(recPkt); System.out.println("Recv : " + getString(recPkt)); } } public static Thread getRecThread() { Runnable recRun = new Runnable(){ @Override public void run() { byte[] receiveData = new byte[1024]; DatagramPacket recPkt = new DatagramPacket(receiveData, receiveData.length); System.out .println("Waiting for receiving data on " + sock.getLocalAddress().toString() + ":" + sock.getLocalPort()); try { sock.receive(recPkt); System.out .println("Received Data : " + getString(recPkt)); } catch (IOException e) { System.err.println(e.getMessage()); } } }; Thread thread = new Thread(recRun); return thread; } public static String getString(DatagramPacket recPkt) { byte[] data = recPkt.getData(); int len = recPkt.getLength(); byte[] recData = new byte[len]; for(int i=0; i<len; i++) { recData[i] = data[i]; } try { return new String(data,"UTF-8"); } catch (UnsupportedEncodingException e) { return null; } } }