前提・実現したいこと
TCPIP通信でクライアントから文字をサーバーに送ってを繰り返しできるようにしたい。
発生している問題
下記URLに書いてある
「4.Listenを続けるのであれば、再びAcceptTcpClientメソッドで接続を待機します。Listenを終了するのであれば、Stopメソッドを呼び出します。」
とあるがソースコードをどういじればいいかわかりません。
https://dobon.net/vb/dotnet/internet/tcpclientserver.html
該当のソースコード
c#ここに言語を入力
1static void Main(string[] args) 2 { 3 4 //Processオブジェクトを作成 5 System.Diagnostics.Process p = new System.Diagnostics.Process(); 6 7 //ComSpec(cmd.exe)のパスを取得して、FileNameプロパティに指定 8 p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec"); 9 //出力を読み取れるようにする 10 p.StartInfo.UseShellExecute = false; 11 p.StartInfo.RedirectStandardOutput = true; 12 p.StartInfo.RedirectStandardInput = false; 13 //ウィンドウを表示しないようにする 14 p.StartInfo.CreateNoWindow = true; 15 //コマンドラインを指定("/c"は実行後閉じるために必要) 16 p.StartInfo.Arguments = @"/c dir \SERVSER\shared"; 17 18 //起動 19 p.Start(); 20 21 //出力を読み取る 22 string results = p.StandardOutput.ReadToEnd(); 23 24 //プロセス終了まで待機する 25 //WaitForExitはReadToEndの後である必要がある 26 //(親プロセス、子プロセスでブロック防止のため) 27 p.WaitForExit(); 28 p.Close(); 29 30 //コマンドラインから情報が取得できなければ処理終了 31 if (results == String.Empty) return; 32 33 //空きドライブ容量文字情報変数 34 String driveInfo = String.Empty; 35 36 System.IO.StringReader rs = new System.IO.StringReader(results); 37 38 //ストリームの末端まで繰り返す 39 while (rs.Peek() > -1) 40 { 41 //一行読み込んで表示する 42 Console.WriteLine(rs.ReadLine()); 43 if (rs.ReadLine().Contains("空き領域") == true) 44 { 45 //空きドライブ容量文字情報を格納 46 driveInfo = rs.ReadLine(); 47 48 //※ここで空きドライブ容量文字情報から、 49 //空きドライブ容量のみ取得して処理を抜ける 50 51 52 break; 53 } 54 } 55 rs.Close(); 56 }
コレじゃほぼ丸投げだと思うんですが。
https://teratail.com/help/avoid-asking
そもそもこのソースでTcpListener出てこない上に質問文は「クライアントから」となっていて、サーバー側の話をしているのかクライアント側の話をしているのかサッパリわかりません。
TCP/IPの通信ですらないのですが・・・
コマンドプロンプトの標準出力を読んでるだけですよね。
リンク先を参考にしてTCP/IP通信を行うというのであっても、貴方がどのような通信を行いたいか(Clientからはデータを送るのみとか)によって実現方法は変わってきます。
まずはご自身の通信のプロトコルを決めるところから行わないとつらいかと思います。
あなたの回答
tips
プレビュー