SAM version 3 :
- Raw and Datagram sessions implemented - option "SILENT=true" added to the stream protocol - java 6 warnings removed ministreaming : - java 6 warnings removed ministreaming and streaming : - added functions : I2PServerSocket.waitIncoming(long timeout) I2PServerSocket.accept(boolean block)
This commit is contained in:
15
apps/sam/Demos/datagramTests/README.txt
Normal file
15
apps/sam/Demos/datagramTests/README.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# test example
|
||||
|
||||
#in a first terminal, launch :
|
||||
./samIn.py inTest
|
||||
|
||||
#in a second terminal, launch :
|
||||
./samForward.py 25000 forward
|
||||
|
||||
#in a third terminal, launch :
|
||||
l=0
|
||||
while [ $l -lt 1000 ]
|
||||
do
|
||||
l=$((l+1))
|
||||
./samOut.py forward this is message n. $l
|
||||
done
|
35
apps/sam/Demos/datagramTests/samForward.py
Executable file
35
apps/sam/Demos/datagramTests/samForward.py
Executable file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
# create a forward style SAM datagram session
|
||||
# that forwards messages on specified port (default port : 25000)
|
||||
# creates a standard datagram server that listens on this port forever
|
||||
# usage : ./samForward.py [port [SAM session name]]
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
port = eval(sys.argv[1])
|
||||
else :
|
||||
port = 25000
|
||||
|
||||
if len(sys.argv)==3 :
|
||||
name = sys.argv[2]
|
||||
else :
|
||||
name = "essaiSamForward"
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=DATAGRAM PORT="+str(port)+" ID="+name+" DESTINATION=EYUpJFeW9tiubXR0aOjvCJ~ndj3xN0Wn-ljuGdbpOEttPg7nj0VCTOQDJ~FAolzn9FIDdmR3VjM0OFFDT46Q5HN4vShXFE2VNC8e3~GjzxJfaJhijRC2R9oIOzsNlzKtInD2o9lh0PxPioNMCigwmgWuqlQHs4tjWeaYRAtooHxbrtuoCIhIdGfyVV-nAcPiyYbouKq3leETXE~4kBXm-LfWfyPtrv6OuDk3GBVVcthv19GYBmnl2YI8HpJjc-G-TvNkgYishjzIJyEW-Xrpy43R4ZBXlyQqnheGLlbOEY8NLDbyNHLRMMOGbcr~67SVE3Iw3RqQ3Dhrkq2FCaQwcDucfIUCCbOfCZgu0hlnCkS42xsUvegQeiwMxbdI~h9v7vcR3yFFOrHX6WQvIZSbFLKNGArGJcfmOJVLqw1wTC4AgYXjk3csVDPd-QWbMXOuodyBgrg27Ds2BBYTsVXWskoo6ASsMIQZ6jMfL7PkY9dPLCRParIyzb9aPmf~MntNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHNqwgkhJnBW4ymaRsdVmITAha-ff0UiALfKSlznqp5HcSewgMHbzQ0I01TQytFnW\n")
|
||||
sys.stdout.write(sess.recv(10000))
|
||||
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.bind(("", port))
|
||||
print "waiting on port:", port
|
||||
while 1:
|
||||
data, addr = s.recvfrom(40000)
|
||||
print data, " received from ", addr, "length=", len(data)
|
||||
|
29
apps/sam/Demos/datagramTests/samIn.py
Executable file
29
apps/sam/Demos/datagramTests/samIn.py
Executable file
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
|
||||
# create a SAM datagram session that writes incoming messages on its master session stream
|
||||
# and a listen forever
|
||||
# usage : ./samIn.py [session name]
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
if len(sys.argv)==2 :
|
||||
name = sys.argv[1]
|
||||
else :
|
||||
name = "datagramSamIn"
|
||||
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=DATAGRAM ID="+name+" DESTINATION=tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABngJSS8xMyF4t82otZmCDhrKjbm-QLMtOLoumwR28ebDHEd4clF6O7aRa3d3yRH7p\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
while 1 :
|
||||
chunk = sess.recv(10000)
|
||||
sys.stdout.write(chunk+'\n')
|
||||
if not chunk : break
|
||||
print
|
||||
|
31
apps/sam/Demos/datagramTests/samOut.py
Executable file
31
apps/sam/Demos/datagramTests/samOut.py
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# sends a message to datagram destinations opened by samForward.py and samIn.py, using specified sending session name
|
||||
# at least samForward.py should be running for results to be seen
|
||||
# usage : ./samOut.py [ sendingSessionName [ message ... ] ]
|
||||
# sendingSessionName : default = datagramSamForward
|
||||
# message : default = "this is nice message"
|
||||
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
name = sys.argv[1]
|
||||
else :
|
||||
name = "datagramSamForward"
|
||||
|
||||
if len(sys.argv)>2 :
|
||||
message = ''.join([s+' ' for s in sys.argv[2:]]).strip()
|
||||
else :
|
||||
message = "This is a nice message"
|
||||
|
||||
|
||||
# client.py
|
||||
port = 7655
|
||||
host = "localhost"
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.bind(("", 0))
|
||||
s.sendto(name+" tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAA\n"+message, (host, port))
|
||||
s.sendto(name+" EYUpJFeW9tiubXR0aOjvCJ~ndj3xN0Wn-ljuGdbpOEttPg7nj0VCTOQDJ~FAolzn9FIDdmR3VjM0OFFDT46Q5HN4vShXFE2VNC8e3~GjzxJfaJhijRC2R9oIOzsNlzKtInD2o9lh0PxPioNMCigwmgWuqlQHs4tjWeaYRAtooHxbrtuoCIhIdGfyVV-nAcPiyYbouKq3leETXE~4kBXm-LfWfyPtrv6OuDk3GBVVcthv19GYBmnl2YI8HpJjc-G-TvNkgYishjzIJyEW-Xrpy43R4ZBXlyQqnheGLlbOEY8NLDbyNHLRMMOGbcr~67SVE3Iw3RqQ3Dhrkq2FCaQwcDucfIUCCbOfCZgu0hlnCkS42xsUvegQeiwMxbdI~h9v7vcR3yFFOrHX6WQvIZSbFLKNGArGJcfmOJVLqw1wTC4AgYXjk3csVDPd-QWbMXOuodyBgrg27Ds2BBYTsVXWskoo6ASsMIQZ6jMfL7PkY9dPLCRParIyzb9aPmf~MntNAAAA\n"+message, (host, port))
|
||||
|
15
apps/sam/Demos/rawTests/README.txt
Normal file
15
apps/sam/Demos/rawTests/README.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# test example
|
||||
|
||||
#in a first terminal, launch :
|
||||
./samIn.py inTest
|
||||
|
||||
#in a second terminal, launch :
|
||||
./samForward.py 25000 forward
|
||||
|
||||
#in a third terminal, launch :
|
||||
l=0
|
||||
while [ $l -lt 1000 ]
|
||||
do
|
||||
l=$((l+1))
|
||||
./samOut.py forward this is message n. $l
|
||||
done
|
36
apps/sam/Demos/rawTests/samForward.py
Executable file
36
apps/sam/Demos/rawTests/samForward.py
Executable file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
# create a forward style SAM raw datagram session
|
||||
# that forwards messages on specified port (default port : 25000)
|
||||
# creates a standard datagram server that listens on this port forever
|
||||
# usage : ./samForward.py [port [SAM session name]]
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
port = eval(sys.argv[1])
|
||||
else :
|
||||
port = 25000
|
||||
|
||||
if len(sys.argv)==3 :
|
||||
name = sys.argv[2]
|
||||
else :
|
||||
name = "essaiSamForward"
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=RAW PORT="+str(port)+" ID="+name+" DESTINATION=EYUpJFeW9tiubXR0aOjvCJ~ndj3xN0Wn-ljuGdbpOEttPg7nj0VCTOQDJ~FAolzn9FIDdmR3VjM0OFFDT46Q5HN4vShXFE2VNC8e3~GjzxJfaJhijRC2R9oIOzsNlzKtInD2o9lh0PxPioNMCigwmgWuqlQHs4tjWeaYRAtooHxbrtuoCIhIdGfyVV-nAcPiyYbouKq3leETXE~4kBXm-LfWfyPtrv6OuDk3GBVVcthv19GYBmnl2YI8HpJjc-G-TvNkgYishjzIJyEW-Xrpy43R4ZBXlyQqnheGLlbOEY8NLDbyNHLRMMOGbcr~67SVE3Iw3RqQ3Dhrkq2FCaQwcDucfIUCCbOfCZgu0hlnCkS42xsUvegQeiwMxbdI~h9v7vcR3yFFOrHX6WQvIZSbFLKNGArGJcfmOJVLqw1wTC4AgYXjk3csVDPd-QWbMXOuodyBgrg27Ds2BBYTsVXWskoo6ASsMIQZ6jMfL7PkY9dPLCRParIyzb9aPmf~MntNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHNqwgkhJnBW4ymaRsdVmITAha-ff0UiALfKSlznqp5HcSewgMHbzQ0I01TQytFnW\n")
|
||||
sys.stdout.write(sess.recv(10000))
|
||||
|
||||
# listening server
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.bind(("", port))
|
||||
print "waiting on port:", port
|
||||
while 1:
|
||||
data, addr = s.recvfrom(40000)
|
||||
print data, " received from ", addr, "length=", len(data)
|
||||
|
31
apps/sam/Demos/rawTests/samIn.py
Executable file
31
apps/sam/Demos/rawTests/samIn.py
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
|
||||
# create a SAM datagram session that writes incoming messages on its master session stream
|
||||
# and a listen forever
|
||||
# usage : ./samIn.py [session name]
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
if len(sys.argv)==2 :
|
||||
name = sys.argv[1]
|
||||
else :
|
||||
name = "datagramSamIn"
|
||||
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=RAW ID="+name+" DESTINATION=tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABngJSS8xMyF4t82otZmCDhrKjbm-QLMtOLoumwR28ebDHEd4clF6O7aRa3d3yRH7p\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
|
||||
# listen incoming messages
|
||||
while 1 :
|
||||
chunk = sess.recv(10000)
|
||||
sys.stdout.write(chunk+'\n')
|
||||
if not chunk : break
|
||||
print
|
||||
|
31
apps/sam/Demos/rawTests/samOut.py
Executable file
31
apps/sam/Demos/rawTests/samOut.py
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# sends a message to datagram destinations opened by samForward.py and samIn.py, using specified sending session name
|
||||
# at least samForward.py should be running for results to be seen
|
||||
# usage : ./samOut.py [ sendingSessionName [ message ... ] ]
|
||||
# sendingSessionName : default = datagramSamForward
|
||||
# message : default = "this is nice message"
|
||||
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
name = sys.argv[1]
|
||||
else :
|
||||
name = "datagramSamForward"
|
||||
|
||||
if len(sys.argv)>2 :
|
||||
message = ''.join([s+' ' for s in sys.argv[2:]]).strip()
|
||||
else :
|
||||
message = "This is a nice message"
|
||||
|
||||
|
||||
# client.py
|
||||
port = 7655
|
||||
host = "localhost"
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.bind(("", 0))
|
||||
s.sendto(name+" tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAA\n"+message, (host, port))
|
||||
s.sendto(name+" EYUpJFeW9tiubXR0aOjvCJ~ndj3xN0Wn-ljuGdbpOEttPg7nj0VCTOQDJ~FAolzn9FIDdmR3VjM0OFFDT46Q5HN4vShXFE2VNC8e3~GjzxJfaJhijRC2R9oIOzsNlzKtInD2o9lh0PxPioNMCigwmgWuqlQHs4tjWeaYRAtooHxbrtuoCIhIdGfyVV-nAcPiyYbouKq3leETXE~4kBXm-LfWfyPtrv6OuDk3GBVVcthv19GYBmnl2YI8HpJjc-G-TvNkgYishjzIJyEW-Xrpy43R4ZBXlyQqnheGLlbOEY8NLDbyNHLRMMOGbcr~67SVE3Iw3RqQ3Dhrkq2FCaQwcDucfIUCCbOfCZgu0hlnCkS42xsUvegQeiwMxbdI~h9v7vcR3yFFOrHX6WQvIZSbFLKNGArGJcfmOJVLqw1wTC4AgYXjk3csVDPd-QWbMXOuodyBgrg27Ds2BBYTsVXWskoo6ASsMIQZ6jMfL7PkY9dPLCRParIyzb9aPmf~MntNAAAA\n"+message, (host, port))
|
||||
|
24
apps/sam/Demos/streamTests/README.txt
Normal file
24
apps/sam/Demos/streamTests/README.txt
Normal file
@ -0,0 +1,24 @@
|
||||
# test example
|
||||
|
||||
#in a first terminal, launch :
|
||||
./samIn.py inTest
|
||||
|
||||
#in a second terminal, launch :
|
||||
./samOut.py
|
||||
|
||||
#and again
|
||||
./samOut.py
|
||||
|
||||
##########
|
||||
|
||||
# test example n°2
|
||||
|
||||
#in a first terminal, launch :
|
||||
./samForward.py inTest
|
||||
|
||||
#in a second terminal, launch :
|
||||
./server.py
|
||||
|
||||
#in a third terminal, launch :
|
||||
./samOut.py
|
||||
|
58
apps/sam/Demos/streamTests/samForward.py
Executable file
58
apps/sam/Demos/streamTests/samForward.py
Executable file
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
# create a master SAM stream session that opens a destination in I2P world
|
||||
# then open another session that tells SAM to forward incoming connections
|
||||
# to the specified address
|
||||
#
|
||||
# usage :
|
||||
# ./samForward.py [ silent [ port [ sessionName [ host ] ] ] ]
|
||||
#
|
||||
# silent : should the first line of incoming socket contain the peer destination (true or false)
|
||||
# port : port to which connections are forwarded (default : 25000)
|
||||
# sessionName : session id (default : "forward")
|
||||
# host : host to which connections are forwarded (default : this host)
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
silent = " SILENT="+sys.argv[1]
|
||||
else : silent = " SILENT=false"
|
||||
|
||||
if len(sys.argv)>=3 :
|
||||
port = " PORT="+sys.argv[2]
|
||||
else : port = " PORT=25000"
|
||||
|
||||
if len(sys.argv)>=4 :
|
||||
name = " ID="+sys.argv[3]
|
||||
else : name = " ID=forward"
|
||||
|
||||
if len(sys.argv)>=5 :
|
||||
host = " HOST="+sys.argv[4]
|
||||
else : host = ""
|
||||
|
||||
|
||||
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=STREAM"+name+" DESTINATION=tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABngJSS8xMyF4t82otZmCDhrKjbm-QLMtOLoumwR28ebDHEd4clF6O7aRa3d3yRH7p\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
|
||||
sock = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.connect(("127.0.0.1",7656));
|
||||
sock.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
sock.send("STREAM FORWARD" + name + host + port + silent + "\n")
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
|
||||
l=0
|
||||
while 1 :
|
||||
chunk = sock.recv(100)
|
||||
sys.stdout.write(chunk)
|
||||
if not chunk : break
|
||||
|
89
apps/sam/Demos/streamTests/samIn.py
Executable file
89
apps/sam/Demos/streamTests/samIn.py
Executable file
@ -0,0 +1,89 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
|
||||
# create an stream session
|
||||
# then an "accept" stream connected to this session
|
||||
# then another "accept" stream from the same session
|
||||
# then listen from the first stream and then listen from the second
|
||||
# usage : ./samIn.py [ silent [ name ] ]
|
||||
# name : the session id ( defaults to InTest )
|
||||
# silent : true or false : tells wether we want to receive the incoming stream destination
|
||||
# as first line
|
||||
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
silent = " SILENT="+sys.argv[1]
|
||||
else : silent = " SILENT=false"
|
||||
|
||||
if len(sys.argv)>=3 :
|
||||
name = sys.argv[2]
|
||||
else : name = "inTest"
|
||||
|
||||
|
||||
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=STREAM ID="+name+" DESTINATION=tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABngJSS8xMyF4t82otZmCDhrKjbm-QLMtOLoumwR28ebDHEd4clF6O7aRa3d3yRH7p\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def accept() :
|
||||
sock = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.connect(("127.0.0.1",7656));
|
||||
sock.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
sock.send("STREAM ACCEPT ID=" + name + silent+"\n")
|
||||
print "STREAM ACCEPT ID="+name+silent+"\n"
|
||||
return sock
|
||||
|
||||
def echo( sock, lines ) :
|
||||
l = 0
|
||||
while lines==-1 or l<lines :
|
||||
chunk = sock.recv(1000)
|
||||
sys.stdout.write(chunk)
|
||||
if lines!=-1 : l = l + 1
|
||||
if not chunk : break
|
||||
sock.send(chunk)
|
||||
print
|
||||
|
||||
|
||||
|
||||
sock1 = accept()
|
||||
time.sleep(1)
|
||||
|
||||
sock2 = accept()
|
||||
|
||||
print "Second listening session"
|
||||
try :
|
||||
echo(sock2, -1)
|
||||
except :
|
||||
print sock2
|
||||
|
||||
if silent == " SILENT=false" :
|
||||
sys.stdout.write(sock1.recv(1000))
|
||||
else :
|
||||
# we know sock1 is accepted if it receives a byte
|
||||
sock1.recv(1)
|
||||
|
||||
sock3 = accept()
|
||||
|
||||
|
||||
print "First listening session"
|
||||
echo(sock1, 2)
|
||||
sock1.close()
|
||||
|
||||
print "Third listening session"
|
||||
echo(sock3, -1)
|
||||
|
||||
|
52
apps/sam/Demos/streamTests/samOut.py
Executable file
52
apps/sam/Demos/streamTests/samOut.py
Executable file
@ -0,0 +1,52 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
|
||||
# open a I2P stream destination
|
||||
# then open another stream that connects to the destination created by samForward.py or samIn.py
|
||||
# then send bytes through the stream
|
||||
# usage :
|
||||
# ./samOut.py [ silent [ sessionName ] ]
|
||||
#
|
||||
# silent : should the first incoming after the connection request contain the connection status message (true or false)
|
||||
# sessionName : session id (default : "forward")
|
||||
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
silent = " SILENT="+sys.argv[1]
|
||||
else : silent = " SILENT=false"
|
||||
|
||||
if len(sys.argv)>=3 :
|
||||
name = " ID="+sys.argv[2]
|
||||
else : name = " ID=testOutStream"
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=STREAM"+name+" DESTINATION=EYUpJFeW9tiubXR0aOjvCJ~ndj3xN0Wn-ljuGdbpOEttPg7nj0VCTOQDJ~FAolzn9FIDdmR3VjM0OFFDT46Q5HN4vShXFE2VNC8e3~GjzxJfaJhijRC2R9oIOzsNlzKtInD2o9lh0PxPioNMCigwmgWuqlQHs4tjWeaYRAtooHxbrtuoCIhIdGfyVV-nAcPiyYbouKq3leETXE~4kBXm-LfWfyPtrv6OuDk3GBVVcthv19GYBmnl2YI8HpJjc-G-TvNkgYishjzIJyEW-Xrpy43R4ZBXlyQqnheGLlbOEY8NLDbyNHLRMMOGbcr~67SVE3Iw3RqQ3Dhrkq2FCaQwcDucfIUCCbOfCZgu0hlnCkS42xsUvegQeiwMxbdI~h9v7vcR3yFFOrHX6WQvIZSbFLKNGArGJcfmOJVLqw1wTC4AgYXjk3csVDPd-QWbMXOuodyBgrg27Ds2BBYTsVXWskoo6ASsMIQZ6jMfL7PkY9dPLCRParIyzb9aPmf~MntNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHNqwgkhJnBW4ymaRsdVmITAha-ff0UiALfKSlznqp5HcSewgMHbzQ0I01TQytFnW\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
|
||||
sock = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.connect(("127.0.0.1",7656));
|
||||
sock.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
sock.send("STREAM CONNECT"+name+" DESTINATION=tYhjbFlFL38WFuO5eCzTvE0UBr4RfaqWMKlekGeMoB-Ouz7nYaWfiS-9j3jMiZT7FH~pwdmoSREOs2ZbXK84sR59P~pPfeCMxnJrk57f3U9uKzXkesjkKWYco3YAGs-G8sw8Fu2FBx0Do57yBdA9~j8Zq6pMjmgPBXCLuXG3vo0Z8zUWCjApJyFY6OXYopHck9Fz9vKy7YhC6zXFHfEuNHVkAooduiLd~aCoGij0TW3lH2rTVU-lx-DUdi6edxQ5-RvDNkXfikvytoCpRkivbNVytjCJLk~7RNU4FpBD20wTZWNJmEG3OY3cjNjawJVFdNjtgczh9K7gZ7ad-NjVjZVhXEj1lU8mk~vAH-2QE5om8dstWUwWoNDwmVDlvIJNKzQmahG~VrpFexFHXO0n3fKIXcSgWGOHDExM8w9neCt7AxUjxPDtXXuYNW~bRwcfiL-C9~z4K9rmwiTPZX0lmsToSXTF28l7WAoj~TMT9kZAjQeFRRWU5oW5oxVuonVvAAAA"+silent+"\n")
|
||||
|
||||
# wait for acknowledgement before sending data, if we asked for it
|
||||
if (silent==" SILENT=false") :
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
|
||||
for i in range(1,11) :
|
||||
sock.send(str(i)+'\n')
|
||||
buf=sock.recv(1000)
|
||||
sys.stdout.write(str(i)+' '+buf)
|
||||
if not buf : break
|
||||
|
||||
print
|
||||
|
||||
|
51
apps/sam/Demos/streamTests/samOutWithNaming.py
Executable file
51
apps/sam/Demos/streamTests/samOutWithNaming.py
Executable file
@ -0,0 +1,51 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
|
||||
# open a I2P stream destination
|
||||
# then open another stream that connects to the destination created by samForward.py or samIn.py
|
||||
# then send bytes through the stream
|
||||
# usage :
|
||||
# ./samOut.py [ silent [ sessionName ] ]
|
||||
#
|
||||
# silent : should the first incoming after the connection request contain the connection status message (true or false)
|
||||
# sessionName : session id (default : "forward")
|
||||
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
silent = " SILENT="+sys.argv[1]
|
||||
else : silent = " SILENT=false"
|
||||
|
||||
if len(sys.argv)>=3 :
|
||||
name = " ID="+sys.argv[2]
|
||||
else : name = " ID=testOutStream"
|
||||
|
||||
sess = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sess.connect(("127.0.0.1",7656));
|
||||
sess.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
sess.send("SESSION CREATE STYLE=STREAM"+name+" DESTINATION=EYUpJFeW9tiubXR0aOjvCJ~ndj3xN0Wn-ljuGdbpOEttPg7nj0VCTOQDJ~FAolzn9FIDdmR3VjM0OFFDT46Q5HN4vShXFE2VNC8e3~GjzxJfaJhijRC2R9oIOzsNlzKtInD2o9lh0PxPioNMCigwmgWuqlQHs4tjWeaYRAtooHxbrtuoCIhIdGfyVV-nAcPiyYbouKq3leETXE~4kBXm-LfWfyPtrv6OuDk3GBVVcthv19GYBmnl2YI8HpJjc-G-TvNkgYishjzIJyEW-Xrpy43R4ZBXlyQqnheGLlbOEY8NLDbyNHLRMMOGbcr~67SVE3Iw3RqQ3Dhrkq2FCaQwcDucfIUCCbOfCZgu0hlnCkS42xsUvegQeiwMxbdI~h9v7vcR3yFFOrHX6WQvIZSbFLKNGArGJcfmOJVLqw1wTC4AgYXjk3csVDPd-QWbMXOuodyBgrg27Ds2BBYTsVXWskoo6ASsMIQZ6jMfL7PkY9dPLCRParIyzb9aPmf~MntNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHNqwgkhJnBW4ymaRsdVmITAha-ff0UiALfKSlznqp5HcSewgMHbzQ0I01TQytFnW\n")
|
||||
sys.stdout.write(sess.recv(1000))
|
||||
|
||||
sock = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.connect(("127.0.0.1",7656));
|
||||
sock.send("HELLO VERSION MIN=3.0 MAX=3.0\n")
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
sock.send("STREAM CONNECT"+name+" DESTINATION=http://amiga.i2p"+silent+"\n")
|
||||
|
||||
# wait for acknowledgement before sending data, if we asked for it
|
||||
if (silent==" SILENT=false") :
|
||||
sys.stdout.write(sock.recv(1000))
|
||||
|
||||
while (1) :
|
||||
buf=sock.recv(1000)
|
||||
sys.stdout.write(buf)
|
||||
if not buf : break
|
||||
|
||||
print
|
||||
|
||||
|
41
apps/sam/Demos/streamTests/server.py
Executable file
41
apps/sam/Demos/streamTests/server.py
Executable file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
|
||||
# echo server
|
||||
# accepts a socket on specified port, writes on stdout and send back incoming data
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
if len(sys.argv)>=2 :
|
||||
port = eval(sys.argv[1])
|
||||
else : port = 25000
|
||||
|
||||
#create an INET, STREAMing socket
|
||||
serversocket = socket.socket(
|
||||
socket.AF_INET, socket.SOCK_STREAM)
|
||||
#bind the socket to a public host,
|
||||
# and a well-known port
|
||||
serversocket.bind(("0.0.0.0", port))
|
||||
#become a server socket
|
||||
serversocket.listen(1)
|
||||
|
||||
|
||||
#accept connections from outside
|
||||
(clientsocket, address) = serversocket.accept()
|
||||
#now do something with the clientsocket
|
||||
#in this case, we'll pretend this is a threaded server
|
||||
|
||||
i = 0
|
||||
while 1 :
|
||||
chunk = clientsocket.recv(1024)
|
||||
i = i + 1
|
||||
sys.stdout.write(str(i)+' '+chunk)
|
||||
if not chunk: break
|
||||
clientsocket.send(str(i)+' '+chunk)
|
||||
|
||||
|
||||
clientsocket.close()
|
||||
|
||||
print
|
||||
|
Reference in New Issue
Block a user