/// <summary> Constructor for making SocketChannel objects from connections /// made to a ServerSocket. /// /// </summary> public SocketChannel(Interp interp, System.Net.Sockets.TcpClient s) { this.mode = TclIO.RDWR; this.sock = s; ChanName = TclIO.getNextDescriptor(interp, "sock"); }
/// <summary> Open a file with the read/write permissions determined by modeFlags. /// This method must be called before any other methods will function /// properly. /// /// </summary> /// <param name="interp">currrent interpreter. /// </param> /// <param name="fileName">the absolute path or name of file in the current /// directory to open /// </param> /// <param name="modeFlags">modes used to open a file for reading, writing, etc /// </param> /// <returns> the channelId of the file. /// </returns> /// <exception cref=""> TclException is thrown when the modeFlags try to open /// a file it does not have permission for or if the /// file dosent exist and CREAT wasnt specified. /// </exception> /// <exception cref=""> IOException is thrown when an IO error occurs that was not /// correctly tested for. Most cases should be caught. /// </exception> internal string open(Interp interp, string fileName, int modeFlags) { mode = modeFlags; FileInfo fileObj = FileUtil.getNewFileObj(interp, fileName); FileMode fileMode = 0; FileAccess fileAccess = 0; if (((modeFlags & TclIO.CREAT) != 0) && ((modeFlags & TclIO.EXCL) != 0)) { fileMode = FileMode.CreateNew; } else if ((modeFlags & TclIO.CREAT) != 0) { fileMode = FileMode.Create; } else { fileMode = FileMode.Open; } if ((modeFlags & TclIO.TRUNC) != 0) { fileMode = fileMode & FileMode.Truncate; } if ((modeFlags & TclIO.APPEND) != 0) { fileMode = fileMode & FileMode.Append; } if ((modeFlags & TclIO.RDWR) != 0) { fileAccess = FileAccess.ReadWrite; } else if ((modeFlags & TclIO.RDONLY) != 0) { fileAccess = FileAccess.Read; } else if ((modeFlags & TclIO.WRONLY) != 0) { fileAccess = FileAccess.Write; } else { throw new TclRuntimeError("FileChannel.java: invalid mode value"); } file = new FileStream(fileObj.FullName, fileMode, fileAccess, FileShare.ReadWrite); string fName = TclIO.getNextDescriptor(interp, "file"); ChanName = fName; //Console.Out.WriteLine("",file.Name); return(fName); }
/// <summary> Constructor - creates a new SocketChannel object with the given /// options. Also creates an underlying Socket object, and Input and /// Output Streams. /// /// </summary> public SocketChannel(Interp interp, int mode, string localAddr, int localPort, bool async, string address, int port) { System.Net.IPAddress localAddress = null; System.Net.IPAddress addr = null; if (async) { throw new TclException(interp, "Asynchronous socket connection not " + "currently implemented"); } // Resolve addresses if (!localAddr.Equals("")) { try { localAddress = System.Net.Dns.GetHostByName(localAddr).AddressList[0]; } catch (System.Exception e) { throw new TclException(interp, "host unknown: " + localAddr); } } try { addr = System.Net.Dns.GetHostByName(address).AddressList[0]; } catch (System.Exception e) { throw new TclException(interp, "host unknown: " + address); } // Set the mode of this socket. this.mode = mode; // Create the Socket object // if ((localAddress != null) && (localPort != 0)) // { // // sock = new Socket(addr, port, localAddress, localPort); // } // else sock = new System.Net.Sockets.TcpClient(addr.ToString(), port); // If we got this far, then the socket has been created. // Create the channel name ChanName = TclIO.getNextDescriptor(interp, "sock"); }