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