Socket.st
changeset 4955 a5b7af921f9e
parent 4944 f4f8254bfb3b
child 4961 a1c49a18e83d
--- a/Socket.st	Mon May 27 14:10:30 2019 +0200
+++ b/Socket.st	Mon May 27 14:12:58 2019 +0200
@@ -761,6 +761,55 @@
     "
 !
 
+newIPv6
+    "create an IPv6 socket - no binding or other setup is done,
+     neither connect nor connect-wait is done."
+
+    ^ self new domain:#'AF_INET6' type:#stream
+
+    "
+      Socket newIPv6
+    "
+
+    "Created: / 27-05-2019 / 14:06:23 / Claus Gittinger"
+!
+
+newIPv6:portNrOrServiceName
+    "create an IPv6 socket for a service -
+     neither connect nor connect-wait is done."
+
+    |newSock socketAddress socketAddressClass|
+
+    newSock := self newIPv6.
+    (newSock notNil and:[portNrOrServiceName notNil]) ifTrue:[
+        [
+            socketAddressClass := newSock socketAddressClass.
+            socketAddress := socketAddressClass hostName:nil serviceName:portNrOrServiceName type:#stream.
+            socketAddress hostAddress:socketAddressClass anyAddress.
+            newSock bindTo:socketAddress reuseAddress:true.
+        ] ifCurtailed:[
+            newSock close.
+        ]
+    ].
+    ^ newSock
+
+
+    "
+     (Socket newIPv6:9996).
+
+     test (eval the code below, then open a browser on 
+        http://[2003:a:e4d:bb01:a17f:9312:54cb:fed7]:9997/
+     
+     (Socket newIPv6:9997) 
+        listenFor:1;
+        readWait;
+        accept.
+        
+    "
+
+    "Created: / 27-05-2019 / 14:06:49 / Claus Gittinger"
+!
+
 newTCP
     "create a TCP socket - no binding or other setup is done,
      neither connect nor connect-wait is done."