-
Notifications
You must be signed in to change notification settings - Fork 0
/
CTCPLinkServer.java
81 lines (75 loc) · 2.31 KB
/
CTCPLinkServer.java
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Observable;
import java.util.LinkedList;
import java.util.StringTokenizer;
/**
This object is executed as a separate thread so it implements Runnable
* and since its part of Observer design pattern it extends Observable.
* Once a message has been received(it blocks on readObject())it notifies the parent which is
* CTCPListener
*/
public class CTCPLinkServer extends Observable implements Runnable{
private Socket m_socket;
private int m_nLinkId;
public CTCPLinkServer(int x_nLinkId,Socket x_sock)
{
m_nLinkId = x_nLinkId;
m_socket = x_sock;
}
public void run()
{
ObjectInputStream objInput = null;
//BufferedReader dataInput = null;
try
{
objInput = new ObjectInputStream(m_socket.getInputStream());
//dataInput = new BufferedReader(new InputStreamReader( m_socket.getInputStream()));
}
catch(IOException ex)
{
ex.printStackTrace();
System.exit(0);
}
while(true)
{
try
{
CInterProcessMessage msg = (CInterProcessMessage)objInput.readObject();
if(msg != null)
{
setChanged();
notifyObservers(msg);
}
else
{
return;
}
}
catch(IOException ex)
{
//System.out.println("Exception in TCP Link Server...");
return;
}
catch(Exception ex)
{
ex.printStackTrace();
return;
}
}
}
}