|
|||||
<このサンプルの概要> ソケット(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)); } } } |