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