test-emulator.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # A test of the emulation facility.  Note that this script
  3. # must be run through "nse", the version of the simulator with
  4. # the emulation extensions.  It listens on the SAP multicast
  5. # address for session announcements, forwards them over a
  6. # link with a large (1000ms) delay, while taking a trace.
  7. # The effect of the delay should be visible in the trace
  8. # file.
  9. #
  10. # If you run this on a non-multicast-capable LAN it will be
  11. # highly uninteresting.
  12. #
  13. set sap_addr 224.2.127.254
  14. set sap_port 9875
  15. set stoptime 20
  16. Class TestEmul
  17. TestEmul instproc init {} {
  18. $self instvar ns_
  19. set ns_ [new Simulator]
  20. $ns_ use-scheduler RealTime
  21. }
  22. TestEmul instproc makenet ntype {
  23. $self instvar net_ ta_
  24. set net_ [new Network/$ntype]
  25. $net_ open readonly
  26. set ta_ [new Agent/Tap]
  27. $ta_ network $net_
  28. }
  29. TestEmul instproc maketopo { tfname } {
  30. $self instvar ns_ ta_ tfchan_
  31. set n0 [$ns_ node]
  32. set n1 [$ns_ node]
  33. #$ns_ duplex-link $n0 $n1 8Mb 1000ms DropTail
  34. $self dlink $n0 $n1 8Mb 1000ms DropTail
  35. $ns_ attach-agent $n0 $ta_
  36. set na [$ns_ nullagent]
  37. set tfchan_ [open $tfname w]
  38. [$ns_ link $n0 $n1] trace $ns_ $tfchan_
  39. $ns_ attach-agent $n1 $na
  40. $ns_ connect $ta_ $na
  41. }
  42. TestEmul instproc run {} {
  43. global sap_addr sap_port stoptime
  44. $self instvar net_ ns_
  45. $self makenet IP/UDP
  46. $self maketopo emout.tr
  47. $net_ bind $sap_addr $sap_port
  48. puts "running..."
  49. $ns_ at $stoptime "$self finish"
  50. $ns_ run
  51. }
  52. TestEmul instproc finish {} {
  53. $self instvar tfchan_ ns_
  54. puts "emulation complete.., writing output file"
  55. $ns_ halt
  56. $ns_ dumpq
  57. close $tfchan_
  58. exit 0
  59. }
  60. TestEmul instproc dlink { n1 n2 bw delay type } {
  61. $self instvar ns_
  62. $ns_ simplex-link $n1 $n2 $bw $delay $type
  63. $ns_ simplex-link $n2 $n1 $bw $delay $type
  64. }
  65. TestEmul instance
  66. instance run