00001 using System;
00002 using System.IO;
00003 using System.Net;
00004 using System.Net.Sockets;
00005 using Net = System.Net;
00006 using Sock = System.Net.Sockets.Socket;
00007
00008 namespace Tamir.SharpSsh.java.net
00009 {
00013 public class Socket
00014 {
00015 internal Sock sock;
00016
00017 protected void SetSocketOption(SocketOptionLevel level, SocketOptionName name, int val)
00018 {
00019 try
00020 {
00021 sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, val);
00022 }
00023 catch
00024 {
00025 }
00026 }
00027
00028
00029
00030
00031
00032
00033
00034 public Socket(string host, int port)
00035 {
00036 IPEndPoint ep = new IPEndPoint(Dns.GetHostByName(host).AddressList[0], port);
00037 this.sock = new Sock(ep.AddressFamily,
00038 SocketType.Stream, ProtocolType.Tcp);
00039 this.sock.Connect(ep);
00040 }
00041
00042 public Socket(Sock sock)
00043 {
00044 this.sock = sock;
00045 }
00046
00047 public Stream getInputStream()
00048 {
00049 return new Net.Sockets.NetworkStream(sock);
00050 }
00051
00052 public Stream getOutputStream()
00053 {
00054 return new Net.Sockets.NetworkStream(sock);
00055 }
00056
00057 public bool isConnected()
00058 {
00059 return sock.Connected;
00060 }
00061
00062 public void setTcpNoDelay(bool b)
00063 {
00064 if(b)
00065 {
00066 SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, 1);
00067 }
00068 else
00069 {
00070 SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, 0);
00071 }
00072 }
00073
00074 public void setSoTimeout(int t)
00075 {
00076 SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, t);
00077 SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, t);
00078 }
00079
00080 public void close()
00081 {
00082 sock.Close();
00083 }
00084
00085 public InetAddress getInetAddress()
00086 {
00087 return new InetAddress( ((IPEndPoint) sock.RemoteEndPoint).Address );
00088 }
00089
00090 public int getPort()
00091 {
00092 return ((IPEndPoint) sock.RemoteEndPoint).Port;
00093 }
00094 }
00095 }