SocketAddress.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // System.Net.SocketAddress.cs
  3. //
  4. // Author:
  5. // Miguel de Icaza ([email protected])
  6. // Dick Porter ([email protected])
  7. //
  8. // (C) Ximian, Inc. http://www.ximian.com
  9. //
  10. using System.Net.Sockets;
  11. namespace System.Net {
  12. public class SocketAddress {
  13. private byte[] data;
  14. public SocketAddress (AddressFamily family, int size)
  15. {
  16. if(size<2) {
  17. throw new ArgumentOutOfRangeException("size is too small");
  18. }
  19. data=new byte[size];
  20. data[0]=(byte)family;
  21. data[1]=(byte)size;
  22. }
  23. public SocketAddress (AddressFamily family)
  24. {
  25. data=new byte[32];
  26. data[0]=(byte)family;
  27. data[1]=(byte)32;
  28. }
  29. public AddressFamily Family {
  30. get {
  31. return((AddressFamily)data[0]);
  32. }
  33. }
  34. public int Size {
  35. get {
  36. return((int)data[1]);
  37. }
  38. }
  39. public byte this [ int offset ] {
  40. get {
  41. return(data[offset]);
  42. }
  43. set {
  44. data[offset]=value;
  45. }
  46. }
  47. public override string ToString() {
  48. string af=((AddressFamily)data[0]).ToString();
  49. int size=(int)data[1];
  50. string ret=af+":"+size+":{";
  51. for(int i=2; i<size; i++) {
  52. int val=(int)data[i];
  53. ret=ret+val;
  54. if(i<size-1) {
  55. ret=ret+",";
  56. }
  57. }
  58. ret=ret+"}";
  59. return(ret);
  60. }
  61. }
  62. }