-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClientThread.java
More file actions
61 lines (50 loc) · 1.89 KB
/
ClientThread.java
File metadata and controls
61 lines (50 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package client.domain;
import client.view.ClientMultiGUI;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
public class ClientThread extends Thread {
private Socket socket;
private ClientMultiGUI clientMultiGUI;
public ClientThread(Socket socket, ClientMultiGUI clientMultiGUI) {
this.socket = socket;
this.clientMultiGUI = clientMultiGUI;
}
public void run() {
try {
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
while (true) {
String xmlMessage = reader.readLine();
if (xmlMessage == null)
break;
Document messageDocument = parseXML(xmlMessage);
handleMessage(messageDocument);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
private Document parseXML(String xmlString) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource inputSource = new InputSource(new java.io.StringReader(xmlString));
return builder.parse(inputSource);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private void handleMessage(Document messageDocument) {
// Handle the received XML message as needed
// For example, you can extract information and update the GUI
// clientMultiGUI.append(message + "\n");
}
}