예제 #1
1
파일: Tcp.cs 프로젝트: carlokok/LibuvSharp
        public static void Connect(Loop loop, IPAddress ipAddress, int port, Action<Exception, Tcp> callback)
        {
            Ensure.ArgumentNotNull(loop, "loop");
            Ensure.ArgumentNotNull(ipAddress, "ipAddress");
            Ensure.ArgumentNotNull(callback, "callback");

            ConnectRequest cpr = new ConnectRequest();
            Tcp socket = new Tcp(loop);

            cpr.Callback = (status, cpr2) => {
                if (status == 0) {
                    callback(null, socket);
                } else {
                    socket.Close();
                    callback(Ensure.Success(loop), null);
                }
            };

            int r;
            if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) {
                r = uv_tcp_connect(cpr.Handle, socket.handle, UV.uv_ip4_addr(ipAddress.ToString(), port), CallbackPermaRequest.StaticEnd);
            } else {
                r = uv_tcp_connect6(cpr.Handle, socket.handle, UV.uv_ip6_addr(ipAddress.ToString(), port), CallbackPermaRequest.StaticEnd);
            }
            Ensure.Success(r, loop);
        }
예제 #2
0
		// LibuvSharp Tcp Client
		public static async Task LoopClient()
		{
			using (var client = new Tcp()) {
				await client.ConnectAsync(Default.IPEndPoint);
				await client.WriteAsync("Hello World from LibuvSharp!");
			}
		}
예제 #3
0
		public static async Task Client()
		{
			try {
				using (var client = new Tcp()) {
					await client.ConnectAsync(Default.IPEndPoint);

					client.Write("Labas Pasauli!");
					var str = await client.ReadStringAsync();
					Console.WriteLine("From Server: {0}", str);
				}
			} catch (Exception e) {
				Console.WriteLine("Client Exception:");
				Console.WriteLine(e);
			}
		}
예제 #4
0
        public void Send(Loop loop, Tcp socket, int offset, int length, Action <Exception, int> callback)
        {
            var fsr = new FileSystemRequest();

            fsr.Callback = (ex, fsr2) => {
                if (callback != null)
                {
                    callback(ex, (int)fsr.Result);
                }
                ;
            };
            int r = uv_fs_sendfile(loop.Handle, fsr.Handle, socket.handle, FileHandle, offset, length, FileSystemRequest.StaticEnd);

            Ensure.Success(r, loop);
        }
예제 #5
0
		public static async Task Client()
		{
			try {
				var client = new Tcp();
				await client.ConnectAsync(ep);

				client.Write(Encoding.ASCII, "Labas Pasauli!");
				var str = await client.ReadStringAsync();
				Console.WriteLine("From Server: {0}", str);

				client.Shutdown();
			} catch (Exception e) {
				Console.WriteLine("Client Exception:");
				Console.WriteLine(e);
			}
		}
예제 #6
0
        public void Connect(IPEndPoint ipEndPoint, IrcUserRegistrationInfo registrationInfo)
        {
            Connect(registrationInfo);

            if (Client == null) {
                Client = new Tcp(Loop);
            }

            Client.Connect(ipEndPoint, (ex) => {
                isConnected = true;
                HandleClientConnected(registrationInfo);
                Client.Data += OnRead;
                Client.Resume();
            });

            HandleClientConnecting();
        }
예제 #7
0
 public void Send(Tcp socket, int offset, int length, Action<Exception, int> callback)
 {
     Send(Loop.Default, socket, offset, length, callback);
 }
예제 #8
0
 public void Send(Loop loop, Tcp socket, int offset, int length, Action<Exception, int> callback)
 {
     var fsr = new FileSystemRequest();
     fsr.Callback = (ex, fsr2) => {
         if (callback != null) {
             callback(ex, (int)fsr.Result);
         };
     };
     int r = uv_fs_sendfile(loop.Handle, fsr.Handle, socket.handle, FileHandle, offset, length, FileSystemRequest.StaticEnd);
     Ensure.Success(r, loop);
 }
예제 #9
0
 public void Send(Tcp socket, int offset, int length, Action <Exception, int> callback)
 {
     Send(Loop.Default, socket, offset, length, callback);
 }
예제 #10
0
파일: Tcp.cs 프로젝트: carlokok/LibuvSharp
 public static Tcp Open(Loop loop, IntPtr nativeHandle)
 {
     Tcp socket = new Tcp(loop);
     uv_tcp_open(socket.handle, nativeHandle);
     return socket;
 }