private import socket_c
intrude import standard::stream
-# A general TCP socket, either a `TCPStream` or a `TCPServer`
+# A general Socket, either TCP or UDP
abstract class Socket
# Underlying C socket
private var native: NativeSocket is noinit
+ # Is this socket closed?
+ var closed = false
+
+end
+
+# A general TCP socket, either a `TCPStream` or a `TCPServer`
+abstract class TCPSocket
+ super Socket
+
# Port used by the socket
var port: Int
#
# Formatted as xxx.xxx.xxx.xxx.
var address: String is noinit
-
- # Is this socket closed?
- var closed = false
end
# Simple communication stream with a remote socket
class TCPStream
- super Socket
+ super TCPSocket
super BufferedReader
super Writer
super PollableReader
#
# Create streams to communicate with clients using `accept`.
class TCPServer
- super Socket
+ super TCPSocket
private var addrin: NativeSocketAddrIn is noinit