ソケットなどを使用してサーバーツールとクライアントツールを使用してアプリケーションを作成しました。今、私はHimachiソフトウェアをインストールしました。私はアプリケーションでこのソフトウェアを使用する必要があります。これにより、ユーザーが私に接続すると、作成されたアプリケーションをこのネットワークで使用できるようになります。ソケットを使用しているのは初めてのことです。問題彼らはお互いに接続されていないということであり、また、それは私のIPとポートを変更することで、このエラーを与える:要求されたアドレスは、そのコンテキストにc#hamachi application
有効ではありません送信ツール
public Send(string Group, string port, string ttl, string rep, string data)
{
IPAddress ip;
try
{
Console.WriteLine("Send on Group: {0} Port: {1} TTL: {2}", Group,port,ttl);
ip = IPAddress.Parse(Group);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip));
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, int.Parse(ttl));
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(Group),int.Parse(port));
Console.WriteLine("Connecting...");
s.Connect(ipep);
byte[] byData = System.Text.Encoding.ASCII.GetBytes(data);
s.Send(byData, SocketFlags.None);
Console.WriteLine("Closing Connection...");
s.Close();
}
catch(System.Exception e) { Console.Error.WriteLine(e.Message); }
}
受信ツール
public string RecvData(string Group, string port)
{
string str = "";
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));
s.Bind(ipep);
IPAddress ip = IPAddress.Parse(Group);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip,IPAddress.Any));
// Getting the data
byte[] buffer = new byte[1024];
int iRx = s.Receive(buffer);
str = System.Text.Encoding.ASCII.GetString(buffer, 0, buffer.Length);
// Closing a Socket
s.Close();
return str;
}
おかげ
実際には何が問題ですか? –
問題は、クライアントが何も受信していないということです。 – Mark
VPN(ハマチ)経由で私のネットワークに参加したユーザと私のメッセージをマルチキャストするために使用するIPアドレスはわかりません。 – Mark