TCPを使用して、クライアント(Windows Phone 8)アプリからWindowsフォームアプリ(サーバーとして機能する)にデータを転送しようとしているサンプルを実行しています。
Windowsフォームアプリでは、このようなリスナーを作成しています
TcpListener tcpListener = null;
IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];
try
{
// Set the listener on the local IP address
// and specifing the port.
tcpListener = new TcpListener(ipAddress, 13);
tcpListener.Start();
output = "Waiting for a connection...";
}
catch (Exception e)
{
output = "Error: " + e.ToString();
MessageBox.Show(output);
}
while (true)
{
Thread.Sleep(10);
TcpClient tcpClient = tcpListener.AcceptTcpClient();
byte[] bytes = new byte[256];
NetworkStream stream = tcpClient.GetStream();
stream.Read(bytes, 0, bytes.Length);
}
Windows Phone 8 アプリでは、マネージ ソケットを使用してリスナーに接続しています。
public Task SendUsingManagedSocketsAsync(string strServerIP)
{
// enable asynchronous task completion
completionSource = new TaskCompletionSource<object>();
// create a new socket
var socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
// create endpoint
var ipAddress = IPAddress.Parse(strServerIP);
var endpoint = new IPEndPoint(ipAddress, PORT);
// create event args
var args = new SocketAsyncEventArgs();
args.RemoteEndPoint = endpoint;
args.Completed += SocketConnectCompleted;
// check if the completed event will be raised. If not, invoke the handler manually.
if (!socket.ConnectAsync(args))
SocketConnectCompleted(args.ConnectSocket, args);
return completionSource.Task;
}
しかし、接続が拒否されたというソケットエラーが発生しました。私のアプローチは正しいですか、windows phone を介して tcp リスナーを接続する方法..ここでは、リアルタイムでサーバーコードだったので、windows フォームアプリのコードを変更できません..または、サーバーのコードを変更することは必須ですか? ....