DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TCP/IPによる文字列送受信について

環境/言語:[WindowsVista]
分類:[.NET]


こんにちは.
TCP/IP通信のサーバー,クライアントを使った文字列の送受信プログラムのサンプルを拝見させていただいております.
http://dobon.net/vb/dotnet/internet/tcpclientserver.html

このサンプルプログラムのサーバーをVBで実行させ,
クライアントはターミナルソフト(TeraTerm)を使って実行すると,
サーバーに1文字しか送信することができません.

どなたか,クライアント(ターミナルソフト)で,Enterを押すとサーバーにEnterまでの文字列を送信させる方法を教えていただけないでしょうか.

初心者ですので,なるべく簡単な表現を使っていただけますと幸いです.

どうか,よろしくお願いします.
■No22987に返信(mintoさんの記事)
>
> こんにちは.
> TCP/IP通信のサーバー,クライアントを使った文字列の送受信プログラムのサンプルを拝見させていただいております.
> http://dobon.net/vb/dotnet/internet/tcpclientserver.html
>
> このサンプルプログラムのサーバーをVBで実行させ,
> クライアントはターミナルソフト(TeraTerm)を使って実行すると,
> サーバーに1文字しか送信することができません.
>
> どなたか,クライアント(ターミナルソフト)で,Enterを押すとサーバーにEnterまでの文字列を送信させる方法を教えていただけないでしょうか.
>

環境/言語:[WindowsVista] 
分類:[VisualStudio2008 ExperssEdition] 
ちょっと環境が違うかもしれませんが、きっと同じ理由だと思われるので返信します
これはきっとTeraTermがキーを押すたびにサーバに送信してしまっているためと思われます(つまり「Enterを押すまで送信しない」という動きをしない)
なので解決法としては
そういう動きをするターミナルソフトを探す or 作る
しかないと思われます
追記ですが、同ページにある「TCPクライアントの作成」がまさしくそういう動きをするTCPクライアントソフトになりますね(1回送信したら終わってしまいますが)
To.tara様

レスポンス,ありがとうございます.
taraさんのご回答のTeraTermがキーを押すたびにサーバに送信してしまっているということでしたら,サーバー側のプログラムを修正しても解決できない,すなわち,クライアント(ここではターミナルソフト)を変更するとこ以外に解決方法はないのでしょうか.



■No23001に返信(taraさんの記事)
■No23002に返信(mintoさんの記事)
> taraさんのご回答のTeraTermがキーを押すたびにサーバに送信してしまっているということでしたら,サーバー側のプログラムを修正しても解決できない,すなわち,クライアント(ここではターミナルソフト)を変更するとこ以外に解決方法はないのでしょうか.
>

すみません、サーバ側のソース修正を行わない前提で話をしていました。
「Enterキーが送られるまで」を1メッセージとして受信したいのであれば、サーバ側で「Enterキーのコードが来るまでバッファにため込んでいく」という修正をすれば実現できますね。

ちょっと具体的なコードは今記述できませんが、イメージでは
データ受信ループ{
 データ受信
 受信データがEnterキーの場合ループを抜ける
 Enterキー以外の場合バッファに蓄積
}
バッファにためた分を画面に表示

のような感じかと思います。
To.tara様

お返事ありがとうございます.
これで大きく進む気がしてきました.
まだまだ,壁にぶつかりそうですが,tara様のご回答に感謝しております.
ありがとうございます.
さっそく取り掛かりたいと思います.
また,苦しんで質問を書き込んだときは教えていただければ幸いです.
本当にありがとうございます.
では,取り合えず,解決とさせていただきます.


■No23003に返信(taraさんの記事)
> すみません、サーバ側のソース修正を行わない前提で話をしていました。
> 「Enterキーが送られるまで」を1メッセージとして受信したいのであれば、サーバ側で「Enterキーのコードが来るまでバッファにため込んでいく」という修正をすれば実現できますね。
>
> ちょっと具体的なコードは今記述できませんが、イメージでは
> データ受信ループ{
>  データ受信
>  受信データがEnterキーの場合ループを抜ける
>  Enterキー以外の場合バッファに蓄積
> }
> バッファにためた分を画面に表示
>
> のような感じかと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板