*

TcpListener

公開日: : C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace TcpListener
{
class Sever
{
static void Main(string[] args)
{
//ListenするIPアドレスを決める
//string host = “localhost”;
//System.Net.IPAddress ipAdd = System.Net.Dns.GetHostEntry(host).AddressList[0];

//Listenするポート番号
int port = 5960;

//TcpListenerオブジェクトを作成する
//System.Net.Sockets.TcpListener listener = new System.Net.Sockets.TcpListener(ipAdd, port);
for ( int i = 0 ; i < 30000 ; i++ ) { System.Net.Sockets.TcpListener listener = null; try { //IPv4とIPv6の全てのIPアドレスをListenするAnyのところにIPv6Any入れるとXPで使えない listener = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, port); //Listenを開始 listener.Start(); Console.WriteLine("Listen start({0}:{1}).", ((System.Net.IPEndPoint)listener.LocalEndpoint).Address, ((System.Net.IPEndPoint)listener.LocalEndpoint).Port); //接続要求に受け入れ対応する System.Net.Sockets.TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("クライアント({0}:{1})と接続。", ((System.Net.IPEndPoint)client.Client.RemoteEndPoint).Address, ((System.Net.IPEndPoint)client.Client.RemoteEndPoint).Port); //NetworkStreamを取得 System.Net.Sockets.NetworkStream ns = client.GetStream(); //クライアントから送られたデータを受信 System.Text.Encoding enc = System.Text.Encoding.UTF8; bool disconnected = false; System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] resBytes = new byte[256]; do { //データの一部を受信する int resSize = ns.Read(resBytes, 0, resBytes.Length); //Readが0を返したときはクライアントが切断したと判断 if (resSize == 0) { disconnected = true; Console.WriteLine("Client切断"); break; } //受信したデータを蓄積する ms.Write(resBytes, 0, resSize); } while (ns.DataAvailable); //受信したデータを文字列に変換 string resMsg = enc.GetString(ms.ToArray()); ms.Close(); Console.WriteLine("受信したデータ " + resMsg); if (!disconnected) { //resMsg = "0663048080"; string nextPath = @"c:\VBS\next.txt";//BHに処理させるファイル string resultPath = @"c:\VBS\result.csv";//BHの結果を書き込むファイル string BHBat = @"C:\VBS\BHstart.bat";//BH起動バッチファイル Console.WriteLine("start"); //BHに処理させるファイル作成する System.IO.StreamWriter sw = new StreamWriter(nextPath, false, System.Text.Encoding.GetEncoding("shift_jis")); sw.WriteLine(@"%DATA_CLR"); sw.WriteLine(resMsg); sw.WriteLine(@"%DATA_EXPORT " + resultPath); sw.Close(); //BHのバッチを起動する System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.CreateNoWindow = true;// コンソール・ウィンドウを開かない p.StartInfo.UseShellExecute = false; // 同一のウィンドウで処理する p.StartInfo.FileName = BHBat; p.Start(); //バッチが終了するまで最大30秒間だけ待機する p.WaitForExit(30000); string resuleStr = ""; string sendMsg = "404"; //バッチが終了したか確認する if (p.HasExited) { Console.WriteLine("終了しました。"); System.IO.StreamReader sr = new StreamReader(resultPath, System.Text.Encoding.GetEncoding("shift_jis")); //クライアントに送信する文字列を作成 sendMsg = sr.ReadLine() ; Console.WriteLine(resuleStr); sr.Close(); } else { Console.WriteLine("終了していません。"); } p.Close(); //文字列をByte型文字列に変換 byte[] sendBytes = enc.GetBytes(sendMsg); //データを送信する ns.Write(sendBytes, 0, sendBytes.Length); Console.WriteLine(sendMsg); //閉じる ns.Close(); client.Close(); } } finally { //リスナを閉じる listener.Stop(); Console.WriteLine("Listener close"); } } Console.ReadLine(); } } }

admax_area



関連記事

no image

STAThread 属性を付ける理由

STA/MTA は COM の用語です。 ものすごく簡単に言うと「OLE/COM サーバの手続き呼

記事を読む

no image

保護中: crystal report

crystal reportを拡張子rptのファイルを編集しようとしてやってみたが、 現段階では不

記事を読む

no image

crystalreportを使わずにレポートを出す場合の覚書 ReportViewer

crystalreportを使わず、visualstudio2013proに入っているレポートを使っ

記事を読む

no image

EXCELをPDFに変換

EXCELをPDFに変換する方法 大量のエクセルファイルをPDFに変換する必要がでたのでTryして

記事を読む

admax_area



Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

PREV
Zabbix 2.2.9
NEXT
vxlan

admax_area



PAGE TOP ↑