/// <summary> /// コンストラクタ,サーバーへ接続します. /// </summary> /// <param name="host"> /// 接続を待っているサーバーのIPアドレスおよびホスト名を指定します. /// IPアドレスにはIPv4およびIPv6を用いることができます. /// </param> /// <param name="port"> /// 接続を待っているサーバーのポート番号(0 から 65535)を指定します. /// </param> /// <param name="connectFunc"> /// サーバーへの接続が成功し,送受信の準備が整った場合に呼び出すコールバック関数のデリゲートを指定します. /// これ以降,Sendを呼び出すことができます. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="recvFunc"> /// 接続したサーバーからの受信があった場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="discFunc"> /// サーバーとの通信が切断された場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="dataLength"> /// 送受信する際に用いるデータ長(byte型配列の要素数)を指定します. /// Sendで送信できる最大データ長になりますが,Sendに与えた配列の大きさによらず, /// このデータ長のデータをクライアントに送ります.このためdataLengthが大きすぎると1回1回の通信に時間がかかります. /// TCP_async.Serverに指定する値と同じにする必要があります. /// </param> public Client(string host, int port, ConnectFunc connectFunc, AsyncRecvBytesFunc recvFunc, DisconnectFunc discFunc, int dataLength) { System.Net.Sockets.Socket soc = ConnectSocket(host, port); ch = new Channel(0, recvFunc, soc, discFunc, dataLength); if (connectFunc != null) { connectFunc(0, ((System.Net.IPEndPoint)soc.RemoteEndPoint).Address.ToString()); } }
public Channel(int rID, AsyncRecvBytesFunc recvFunc, System.Net.Sockets.Socket workingSoc, DisconnectFunc cFunc, int dataLength) { this.remoteID = rID; this.FuncWhenRecvd = recvFunc; this.FuncWhenClosed = cFunc; this.socket = workingSoc; this.bufferSize = dataLength; AsyncStateObject.bufferSizeStatic = dataLength; StartReceive(this.socket); }
/// <summary> /// コンストラクタ,クライアントからの接続を開始します. /// </summary> /// <param name="port"> /// クライアントからの接続を待つポート番号(0 から 65535)を指定します. /// Well known port numbersは使うべきではありません. /// </param> /// <param name="accptdFunc"> /// クライアントからの接続を受け入れた時に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="recvFunc"> /// 接続したクライントからの受信があった場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="discFunc"> /// 接続したクライントが切断された場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="dataLength"> /// 送受信する際に用いるデータ長(byte型配列の要素数)を指定します. /// Sendで送信できる最大データ長になりますが,Sendに与えた配列の大きさによらず, /// このデータ長のデータをクライアントに送ります.このためdataLengthが大きすぎると1回1回の通信に時間がかかります. /// TCP_async.Clientに指定する値と同じにする必要があります. /// </param> public Server(int port, ConnectFunc accptdFunc, AsyncRecvBytesFunc recvFunc, DisconnectFunc discFunc, int dataLength) { nextRemoteID = 0; this.FuncWhenRecv = recvFunc; this.FuncWhenAccptd = accptdFunc; this.FuncWhenDisconnect = discFunc; this.chList = new List <Channel>(); this.bufferSize = dataLength; System.Net.IPEndPoint endPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Any, port); Console.WriteLine("server:Local address and port: {0}", endPoint.ToString()); this.listenerSoc = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); this.listenerSoc.Bind(endPoint); this.listenerSoc.Listen(1000); StartAccept(); }
/// <summary> /// コンストラクタ,サーバーへ接続します. /// </summary> /// <param name="host"> /// 接続を待っているサーバーのIPアドレスおよびホスト名を指定します. /// IPアドレスにはIPv4およびIPv6を用いることができます. /// </param> /// <param name="port"> /// 接続を待っているサーバーのポート番号(0 から 65535)を指定します. /// </param> /// <param name="connectFunc"> /// サーバーへの接続が成功し,送受信の準備が整った場合に呼び出すコールバック関数のデリゲートを指定します. /// これ以降,Sendを呼び出すことができます. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="recvFunc"> /// 接続したサーバーからの受信があった場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="discFunc"> /// サーバーとの通信が切断された場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <remarks>最大データ長は1024が使用されます.</remarks> public Client(string host, int port, ConnectFunc connectFunc, AsyncRecvBytesFunc recvFunc, DisconnectFunc discFunc) : this(host, port, connectFunc, recvFunc, discFunc, 1024) { }
public Channel(int rID, AsyncRecvBytesFunc recvFunc, System.Net.Sockets.Socket workingSoc, DisconnectFunc cFunc, int dataLength ) { this.remoteID = rID; this.FuncWhenRecvd = recvFunc; this.FuncWhenClosed = cFunc; this.socket = workingSoc; this.bufferSize = dataLength; AsyncStateObject.bufferSizeStatic = dataLength; StartReceive(this.socket); }
/// <summary> /// コンストラクタ,クライアントからの接続を開始します. /// </summary> /// <param name="port"> /// クライアントからの接続を待つポート番号(0 から 65535)を指定します. /// Well known port numbersは使うべきではありません. /// </param> /// <param name="accptdFunc"> /// クライアントからの接続を受け入れた時に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="recvFunc"> /// 接続したクライントからの受信があった場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="discFunc"> /// 接続したクライントが切断された場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="dataLength"> /// 送受信する際に用いるデータ長(byte型配列の要素数)を指定します. /// Sendで送信できる最大データ長になりますが,Sendに与えた配列の大きさによらず, /// このデータ長のデータをクライアントに送ります.このためdataLengthが大きすぎると1回1回の通信に時間がかかります. /// TCP_async.Clientに指定する値と同じにする必要があります. /// </param> public Server(int port, ConnectFunc accptdFunc, AsyncRecvBytesFunc recvFunc, DisconnectFunc discFunc, int dataLength) { nextRemoteID = 0; this.FuncWhenRecv = recvFunc; this.FuncWhenAccptd = accptdFunc; this.FuncWhenDisconnect = discFunc; this.chList = new List<Channel>(); this.bufferSize = dataLength; System.Net.IPEndPoint endPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Any, port); Console.WriteLine("server:Local address and port: {0}", endPoint.ToString()); this.listenerSoc = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); this.listenerSoc.Bind(endPoint); this.listenerSoc.Listen(1000); StartAccept(); }
/// <summary> /// コンストラクタ,クライアントからの接続を開始します. /// </summary> /// <param name="port"> /// クライアントからの接続を待つポート番号(0 から 65535)を指定します. /// Well known port numbersは使うべきではありません. /// </param> /// <param name="accptdFunc"> /// クライアントからの接続を受け入れた時に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="recvFunc"> /// 接続したクライントからの受信があった場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="discFunc"> /// 接続したクライントが切断された場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <remarks> /// 最大データ長は1024が用いられます.</remarks> public Server(int port, ConnectFunc accptdFunc, AsyncRecvBytesFunc recvFunc, DisconnectFunc discFunc) : this(port, accptdFunc, recvFunc, discFunc, 1024) { }
/// <summary> /// コンストラクタ,サーバーへ接続します. /// </summary> /// <param name="host"> /// 接続を待っているサーバーのIPアドレスおよびホスト名を指定します. /// IPアドレスにはIPv4およびIPv6を用いることができます. /// </param> /// <param name="port"> /// 接続を待っているサーバーのポート番号(0 から 65535)を指定します. /// </param> /// <param name="connectFunc"> /// サーバーへの接続が成功し,送受信の準備が整った場合に呼び出すコールバック関数のデリゲートを指定します. /// これ以降,Sendを呼び出すことができます. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="recvFunc"> /// 接続したサーバーからの受信があった場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="discFunc"> /// サーバーとの通信が切断された場合に呼び出すコールバック関数のデリゲートを指定します. /// コールバックが不要な場合はnullを指定します. /// </param> /// <param name="dataLength"> /// 送受信する際に用いるデータ長(byte型配列の要素数)を指定します. /// Sendで送信できる最大データ長になりますが,Sendに与えた配列の大きさによらず, /// このデータ長のデータをクライアントに送ります.このためdataLengthが大きすぎると1回1回の通信に時間がかかります. /// TCP_async.Serverに指定する値と同じにする必要があります. /// </param> public Client(string host, int port, ConnectFunc connectFunc, AsyncRecvBytesFunc recvFunc, DisconnectFunc discFunc, int dataLength) { System.Net.Sockets.Socket soc = ConnectSocket(host, port); ch = new Channel(0, recvFunc, soc, discFunc, dataLength); if (connectFunc != null) connectFunc(0, ((System.Net.IPEndPoint)soc.RemoteEndPoint).Address.ToString()); }