Doel:
Nadat de server een commando van de client over een TCP verbinding heeft ontvangen, moet deze een bepaalde tekst over UDP gaan sturen. Vervolgens moet er bij de client een nieuwe command prompt gestart worden, waarin deze tekst output belandt. De server moet om de paar seconden deze zelfde tekst opnieuw versturen. De client kan het versturen stoppen door een stopcommando via de TCP verbinding te versturen. De client beschikt alleen over een command prompt.
Ik heb een werkende server en client geschreven voor de TCP verbinding. Mocht het nodig zijn wil ik deze code ook posten. Daarnaast heb ik ook een werkende UDP server/client:
Client:
Server:
Ik heb dus werkende codes voor zowel een tcp client/server als udp client/server. Nu moet ik ze dus laten samenwerken. Beide servers moeten samengevoegd worden tot 1 server. Het is dus niet de bedoeling dat ik met 2 losse server eindig.
Problemen:
1. Hoe kun je de tekst die via UDP wordt verzonden, in een appart venster laten komen, nadat je het commando vanaf de client het commando hebt gegeven om het verzenden te starten? Het is van belang dat je 2 schermen hebt, 1 om commando's te sturen, en een tweede om de tekst te ontvangen. Als ik de tekst ook op het scherm om commando's te versturen terrecht laat komen, dan kan ik geen commando's meer verzenden zoals Stop(), omdat hij constant serveroutput aan het ontvangen is.
2. De server moet meerdere clients kunnen verwerken. Mijn tcp server bevat kan verschillende threads starten. Moet dit ook in de UDP server worden ingebouwd? In mijn tests kon mijn UDP server gewoon meerdere clienten ontvangen, maar het kan zijn dat ik toch iets fout heb gedaan waardoor dat dit toeval is.
Nadat de server een commando van de client over een TCP verbinding heeft ontvangen, moet deze een bepaalde tekst over UDP gaan sturen. Vervolgens moet er bij de client een nieuwe command prompt gestart worden, waarin deze tekst output belandt. De server moet om de paar seconden deze zelfde tekst opnieuw versturen. De client kan het versturen stoppen door een stopcommando via de TCP verbinding te versturen. De client beschikt alleen over een command prompt.
Ik heb een werkende server en client geschreven voor de TCP verbinding. Mocht het nodig zijn wil ik deze code ook posten. Daarnaast heb ik ook een werkende UDP server/client:
Client:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress =InetAddress.getByName("127.0.0.1"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" +modifiedSentence); clientSocket.close(); } |
Server:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); String sentence = new String( receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String sendText = "Te verzenden tekst"; sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } } } |
Ik heb dus werkende codes voor zowel een tcp client/server als udp client/server. Nu moet ik ze dus laten samenwerken. Beide servers moeten samengevoegd worden tot 1 server. Het is dus niet de bedoeling dat ik met 2 losse server eindig.
Problemen:
1. Hoe kun je de tekst die via UDP wordt verzonden, in een appart venster laten komen, nadat je het commando vanaf de client het commando hebt gegeven om het verzenden te starten? Het is van belang dat je 2 schermen hebt, 1 om commando's te sturen, en een tweede om de tekst te ontvangen. Als ik de tekst ook op het scherm om commando's te versturen terrecht laat komen, dan kan ik geen commando's meer verzenden zoals Stop(), omdat hij constant serveroutput aan het ontvangen is.
2. De server moet meerdere clients kunnen verwerken. Mijn tcp server bevat kan verschillende threads starten. Moet dit ook in de UDP server worden ingebouwd? In mijn tests kon mijn UDP server gewoon meerdere clienten ontvangen, maar het kan zijn dat ik toch iets fout heb gedaan waardoor dat dit toeval is.