NonSoft

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


 サンプル(ソース/コード)
<このサンプルの概要>
ソケット(UDP/IP)を使用して電文の送受信をするC#/VB.NETのサンプルソースです。
TCP/IPにはサーバー側とクライアント側という区別がありましたが、
UDP/IPには区別はありません。

ソケット(UDP/IP)の接続手順は以下の通りです。
1.ソケット生成
2.ソケット接続

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

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

このサンプルはタイマーで受信電文チェックを行なっています。
受信イベントで受信電文チェックをするサンプルはこちらです。
ソケット(UDP/IP)での送受信(非同期イベント)サンプル(C#/VB.NET)

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

' VB.NETのソケット通信サンプル
Public Class Form1
    ' ソケット生成
    Private objSck As New System.Net.Sockets.UdpClient(7777)
    Private Sub Form1_Load( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
        ' ソケット接続
        objSck.Connect("127.0.0.1", 8888)
    End Sub

    Private Sub Form1_FormClosed( _
        ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) _
        Handles MyBase.FormClosed
        ' ソケットクローズ
        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あいう")
        objSck.Send(dat, 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 ipAny As System.Net.IPEndPoint = _
                New System.Net.IPEndPoint(System.Net.IPAddress.Any, 0)
            Dim dat As Byte() = objSck.Receive(ipAny)
            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.UdpClient objSck = new System.Net.Sockets.UdpClient(7777);
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // ソケット接続
        objSck.Connect("127.0.0.1", 8888);

    }

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

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

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