Hi! i have been asked to create a client server program that should be able to swap between TCP and UDP.
I have got this so far, its a basic program that works the area of the circle out...
SERVER code:
package server;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
public class Server extends JFrame {
private JTextArea jta = new JTextArea();
public Server(){
setTitle("Server");
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(new JScrollPane(jta), BorderLayout.CENTER);
setVisible(true);
try{
ServerSocket serverSocket = new ServerSocket(8000);
jta.append("Server started at : "+ new Date() + "\n");
Socket socket = serverSocket.accept();
DataInputStream inputFromClient = new DataInputStream(socket.getInputStream());
DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream());
while(true){
double radius = inputFromClient.readDouble();
double area = Math.PI*radius * radius;
outputToClient.writeDouble(area);
jta.append("Radius recieved from client : "+ radius + "\n");
jta.append("Area found : "+ area + "\n");
}
}
catch(IOException ex){
System.err.println(ex);
}
}
public static void main(String[] args) {
new Server();
}
}
Client code:
package client;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
public class Client extends JFrame {
private JTextField jtf = new JTextField();
private JTextArea jta = new JTextArea();
private DataInputStream fromServer;
private DataOutputStream toServer;
public Client(){
setTitle("Client");
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setVisible(true);
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("Enter radius :"), BorderLayout.WEST);
p.add(jtf, BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.RIGHT);
setLayout(new BorderLayout());
add(p,BorderLayout.NORTH);
add(new JScrollPane(jta), BorderLayout.CENTER);
jtf.addActionListener(new TextFieldListener());
try{
Socket socket = new Socket("10.142.132.204", 8000);
fromServer = new DataInputStream(socket.getInputStream());
toServer = new DataOutputStream(socket.getOutputStream());
}
catch(IOException ex){
System.err.println(ex);
}
}
private class TextFieldListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
try{
double radius = Double.parseDouble(jtf.getText().trim());
toServer.writeDouble(radius);
toServer.flush();
double area = fromServer.readDouble();
jta.append("Radius is : "+ radius + "\n");
jta.append("Area recieved from the server is : "+ area + "\n");
}
catch(IOException ex){
System.err.println(ex);
}
}
}
public static void main(String[] args) {
new Client();
}
now i do not know how to make the client or server choose between TCP or UDP... can i two buttons that have "TCP" and "UDP" on them and when clicked it will use that protocol?
I wouldnt know how to code that though.. could someone be of assistance to me please? I am new new to Java by the way:-)