「C Sharpとネットワーク - TCP Client」の版間の差分

ナビゲーションに移動 検索に移動
30行目: 30行目:


== サンプルコード ==
== サンプルコード ==
  <syntaxhighlight lang="cpp">
以下の例では、TcpClientクラスを使用して、サーバに接続およびメッセージを送信して応答を受信している。<br>
  public void tcpConnectAndSend()
<br>
  <syntaxhighlight lang="c#">
  using System;
using System.Text;
using System.IO;
using System.Net.Sockets;
class TcpClientExample
  {
  {
     var ip = "localhost";
     static void Main()
    var port = 8888;
    {
      string server = "<ホスト名またはIPアドレス>"; // サーバのアドレス
      int port     = <ポート番号>;               // ポート番号
   
   
    client.Connect(ip, port);
      try
      {
          using (TcpClient client = new TcpClient(server, port))
          {
            Console.WriteLine("サーバに接続");
   
   
    try
            using (NetworkStream stream = client.GetStream())
    {
            {
      using (System.Net.Sockets.NetworkStream ns = client.GetStream())
                // サーバにメッセージを送信
      {
                string message = "Hello, Server";
          ns.ReadTimeout  = 1000;
                byte[] data = Encoding.UTF8.GetBytes(message);
          ns.WriteTimeout  = 1000;
                stream.Write(data, 0, data.Length);
          byte[] sendBytes = Encoding.UTF8.GetBytes("message: hoge");
                Console.WriteLine($"送信メッセージ: {message}");
          ns.Write(sendBytes, 0, sendBytes.Length);
                // サーバーからの応答を受信
                data = new byte[256];
                int bytes = stream.Read(data, 0, data.Length);
                string responseData = Encoding.UTF8.GetString(data, 0, bytes);
                Console.WriteLine($"受信メッセージ: {responseData}");
            }
          }
      }
      catch (ArgumentNullException e)
      {  // 無効な引数が渡された場合
          Console.WriteLine($"ArgumentNullException: {e.Message}");
      }
      catch (SocketException e)
      {  // ネットワーク関連のエラーが発生した場合
          Console.WriteLine($"SocketException: {e.Message}");
      }
      catch (IOException e)
      {  // ストリームの読み書き中にエラーが発生した場合
          Console.WriteLine($"IOException: {e.Message}");
      }
      catch (Exception e)
      {  // その他の予期せぬエラーが発生した場合
          Console.WriteLine($"予期せぬエラーが発生しました: {e.Message}");
       }
       }
    }
    }
    catch (IOException e)
    {
        // 送信失敗
    }
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>

案内メニュー