ホームページ  >  記事  >  バックエンド開発  >  C# (ソケット) 同期ソケットのコード例

C# (ソケット) 同期ソケットのコード例

黄舟
黄舟オリジナル
2016-12-22 13:27:131267ブラウズ

同期クライアント ソケットの例

次のサンプル プログラムは、サーバーに接続するクライアントを作成します。クライアントは同期ソケットを使用して生成されるため、サーバーが応答を返すまでクライアント アプリケーションの実行は一時停止されます。アプリケーションは文字列をサーバーに送信し、サーバーから返された文字列をコンソールに表示します。

C#
using System.Net;
using System.Net.Socket;
public static void StartClient() {
//受信データ用のデータ バッファー。 byte[] bytes = new byte[1024];
// リモート デバイスに接続します。
try {
// この例では、ローカル コンピューターのポート 11000 を使用します。 = Dns.Resolve(Dns.GetHostName())
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint RemoteEP = new IPEndPoint(ipAddress,11000);
Socket sender = new Socket を作成します。 (AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// ソケットをリモート エンドポイントに接続します。
try {
sender.Connect(remoteEP); {0}",
sender.RemoteEndPoint.ToString());
// データ文字列をバイト配列にエンコードします。
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
// ソケット経由でデータを送信します。
int bytesSent = sender.Send(msg);
int bytesRec = sender.Receive(bytes); test = {0}",
Encoding.ASCII.GetString(bytes,0,bytesRec));
// ソケットを解放します。
sender.Shutdown(SocketShutdown. Both);
sender.Close();
} catch ( ArgumentNullException ane) {
Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
} catch (SocketException se) {
Console.WriteLine("SocketException : {0}",se.ToString() );
} catch (例外 e) {
Console.WriteLine("予期しない例外: {0}", e.ToString());
}
} catch (例外 e) {
Console.WriteLine( e.ToString() ); 要求されたサーバー。サーバーは同期ソケット
を使用して生成されるため、クライアントからの接続を待機している間、サーバー アプリケーションの実行がハングします。アプリケーションはクライアントから文字列を受信し、その文字列をコンソールに表示し、その文字列をクライアントにエコーバックします。クライアントからの文字列には、メッセージの終わりを示す文字列「」が含まれている必要があります。






C#
using System.Net;
using System.Text;
public class SynchronousSocketListener;からのデータclient.
public static string data = null;
public static void StartListening() {
// 受信データのデータ バッファー
byte[] bytes = new Byte[1024];
// ソケットのローカル エンドポイントを確立します。
// Dns.GetHostName は、アプリケーションを実行している
// ホストの名前を返します。
IPAddress ipAddress = ipHostInfo.AddressList[0];IPEndPoint localEndPoint = 新しい IPEndPoint(ipAddress, 11000); 
// TCP/IP ソケットを作成します。 
ソケットリスナー = 新しいソケット(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp); 
// ソケットをローカル エンドポイントにバインドし、
// 受信接続をリッスンします。 
試してください {
listener.Bind(localEndPoint); 
listener.Listen(10); 
// 接続のリッスンを開始します。 
while (true) {
Console.WriteLine("接続を待機しています..."); 
// 着信接続を待機している間、プログラムは一時停止されます。 
ソケットハンドラー=listener.Accept(); 
data = null; 
// 受信接続を処理する必要があります。 
while (true) {
バイト = 新しい バイト[1024]; 
int bytesRec = handler.Receive(bytes); 
data += Encoding.ASCII.GetString(bytes,0,bytesRec); 
if (data.IndexOf("") > -1) {
break; 
}
}
// コンソールにデータを表示します。 
Console.WriteLine( "受信したテキスト : {0}", data); 
// データをクライアントにエコーバックします。 
byte[] msg = Encoding.ASCII.GetBytes(data); 
handler.Send(msg); 
handler.Shutdown(SocketShutdown. Both); 
handler.Close(); 
}
} catch (Exception e) {
Console.WriteLine(e.ToString()); 
}
Console.WriteLine("n続行するには Enter を押してください..."); 
Console.Read(); 
}
public static int Main(String[] args) {
StartListening(); 
0を返す; 
}
}

以上は c#(Socket) 同步套接字代例の内容、その他の相关内容请关注PHP中文网(www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。