Advertisement
Guest User

Untitled

a guest
May 24th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. import socket
  2.  
  3. MAX_BUFF_SIZE = 0x7FFFFFFF
  4. MIN_BUFF_SIZE = 0
  5.  
  6. def checkSocketBuffer():
  7. reportDict = {}
  8. # check TCP Buffer
  9. checkTcpSocketBuffer(reportDict)
  10.  
  11. # check UDP Buffer
  12. checkUdpSocketBuffer(reportDict)
  13.  
  14. # report
  15. printReport(reportDict)
  16.  
  17. def checkTcpSocketBuffer(reportDict):
  18. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  19.  
  20. # default SO_RCVBUF
  21. rcvbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
  22. reportDict["Tcp.RcvBuf.Def"] = rcvbuf_size
  23.  
  24. # check MAX SO_RCVBUF
  25. s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, MAX_BUFF_SIZE)
  26. rcvbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
  27. reportDict["Tcp.RcvBuf.Max"] = rcvbuf_size
  28.  
  29. # check MIN SO_RCVBUF
  30. s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, MIN_BUFF_SIZE)
  31. rcvbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
  32. reportDict["Tcp.RcvBuf.Min"] = rcvbuf_size
  33.  
  34. # default SO_SNDBUF
  35. sndbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
  36. reportDict["Tcp.SndBuf.Def"] = sndbuf_size
  37.  
  38. # check MAX SO_SNDBUF
  39. s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, MAX_BUFF_SIZE)
  40. sndbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
  41. reportDict["Tcp.SndBuf.Max"] = sndbuf_size
  42.  
  43. # check MIN SO_SNDBUF
  44. s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, MIN_BUFF_SIZE)
  45. sndbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
  46. reportDict["Tcp.SndBuf.Min"] = sndbuf_size
  47.  
  48. s.close()
  49.  
  50. def checkUdpSocketBuffer(reportDict):
  51. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  52.  
  53. # default SO_RCVBUF
  54. rcvbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
  55. reportDict["Udp.RcvBuf.Def"] = rcvbuf_size
  56.  
  57. # check MAX SO_RCVBUF
  58. s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, MAX_BUFF_SIZE)
  59. rcvbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
  60. reportDict["Udp.RcvBuf.Max"] = rcvbuf_size
  61.  
  62. # check MIN SO_RCVBUF
  63. s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, MIN_BUFF_SIZE)
  64. rcvbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
  65. reportDict["Udp.RcvBuf.Min"] = rcvbuf_size
  66.  
  67. # default SO_SNDBUF
  68. sndbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
  69. reportDict["Udp.SndBuf.Def"] = sndbuf_size
  70.  
  71. # check MAX SO_SNDBUF
  72. s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, MAX_BUFF_SIZE)
  73. sndbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
  74. reportDict["Udp.SndBuf.Max"] = sndbuf_size
  75.  
  76. # check MIN SO_SNDBUF
  77. s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, MIN_BUFF_SIZE)
  78. sndbuf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
  79. reportDict["Udp.SndBuf.Min"] = sndbuf_size
  80.  
  81. s.close()
  82.  
  83. def printReport(reportDict):
  84. key_list = reportDict.keys()
  85. key_list.sort()
  86.  
  87. for key in key_list:
  88. print "%s : %d" % (key, reportDict[key])
  89.  
  90. if __name__ == "__main__":
  91. checkSocketBuffer()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement