NonSoft

ソケット(TCP/IP)での送受信サンプル(C#/VB.NET)


 サンプル(ソース/コード)
<このサンプルの概要>
ソケット(TCP/IP)を使用して電文の送受信(クライアント側)をするC#/VB.NETのサンプルソースです。
サーバー側はTCP/IPサーバでの送受信サンプル(C#/VB.NET)です。

ソケット(TCP/IP)の接続手順は以下の通りです。
1.ソケット生成
2.ソケット接続
3.ソケットストリーム取得

ソケット(TCP/IP)の送信手順は以下の通りです。
1.送信電文作成
2.ソケット送信

ソケット(TCP/IP)の受信手順は以下の通りです。
1.ソケット受信
2.受信電文表示

このサンプルは受信イベントの代わりに、タイマーで受信電文チェックを行なっています。

ソケット関係のその他のサンプルソースやツールはこちらです。
このサンプルの通信テストでもこちらのツールを使用しました。
通信サンプルやツール(RS232C TCP/IP UDP/IP)

' VB.NETのソケット通信サンプル
Public Class Form1
    ' ソケット生成
    Private objSck As New System.Net.Sockets.TcpClient
    Private objStm As System.Net.Sockets.NetworkStream
    Private Sub Form1_Load( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
        ' ソケット接続
        objSck.Connect("127.0.0.1", 8888)
        ' ソケットストリーム取得
        objStm = objSck.GetStream()
    End Sub

    Private Sub Form1_FormClosed( _
        ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) _
        Handles MyBase.FormClosed
        ' ソケットクローズ
        objStm.Close()
        objSck.Close()
    End Sub

    Private Sub Button1_Click( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
        ' ソケット送信
        Dim dat As Byte() = _
            System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("abcあいう")
        objStm.Write(dat, 0, dat.GetLength(0))
    End Sub

    Private Sub Timer1_Tick( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Timer1.Tick
        ' ソケット受信
        If objSck.Available > 0 Then
            Dim dat As Byte() = New Byte(objSck.Available - 1) {}
            objStm.Read(dat, 0, dat.GetLength(0))
            MessageBox.Show( _
                System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat))
        End If
    End Sub
End Class

// C#.NETのソケット通信サンプル
public partial class Form1 : Form
{
    // ソケット生成
    private System.Net.Sockets.TcpClient objSck = 
        new System.Net.Sockets.TcpClient();
    private System.Net.Sockets.NetworkStream objStm;
    private void Form1_Load(object sender, EventArgs e)
    {
        // ソケット接続
        objSck.Connect("127.0.0.1", 8888);
        // ソケットストリーム取得
        objStm = objSck.GetStream();
    }

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
        // ソケットクローズ
        objStm.Close();
        objSck.Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // ソケット送信
        Byte[] dat =
            System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes("abcあいう");
        objStm.Write(dat, 0, dat.GetLength(0));
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        // ソケット受信
        if (objSck.Available > 0)
        {
            Byte[] dat = new Byte[objSck.Available];
            objStm.Read(dat, 0, dat.GetLength(0));
            MessageBox.Show(
                System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat));
        }
    }
}