мне нужна помощь :)
Я провел множество поисков в Google и не нашел ответа, надеюсь, кто-то может помочь мне здесь :)
Итак, я пишу простой клиент P2P Video Chat, который создает IP-адрес из текстового поля и подключается к «другому» на порту 5096. Итак, проблема начинается, когда я пытаюсь подключиться к внешнему IP-адресу. Слушатель не получит пакеты, и я не могу передать свое изображение. Может кто-нибудь помочь мне?
Это код моего UdpPictureSender:
class UDPPictureSender
{
bool closedSender = false;
Socket sending_socket;
IPAddress send_to_address;
IPEndPoint sending_end_point;
MemoryStream imageMemoryStream;
public UDPPictureSender()
{
initializeUdpPictureSender();
}
public void initializeUdpPictureSender()
{
sending_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
send_to_address = IPAddress.Parse(ConnectionSettings.ipAdress);
sending_end_point = new IPEndPoint(send_to_address, 5096);
}
public void sendImage(Image image)
{
if (closedSender)
{
initializeUdpPictureSender();
}
imageMemoryStream = new MemoryStream();
image.Save(imageMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Byte[] bytes = imageMemoryStream.GetBuffer();
sending_socket.SendTo(bytes, sending_end_point);
imageMemoryStream.Flush();
}
public void closeConnection()
{
sending_socket.Close();
send_to_address = null;
sending_end_point = null;
closedSender = true;
}
}
Это код UDPListener:
class UDPListener
{
private const int listenPort = 5096;
bool done = false;
bool stoped = false;
UdpClient listener;
IPEndPoint groupEP;
Image received_data;
byte [] receive_byte_array;
MemoryStream currentMemoryStream;
public UDPListener()
{
startupSettings();
}
public void startupSettings()
{
groupEP = new IPEndPoint(IPAddress.Any, listenPort);
listener = new UdpClient(listenPort);
}
public Image listenForImages()
{
if (stoped)
{
startupSettings();
stoped = false;
}
try
{
while (!done)
{
receive_byte_array = listener.Receive(ref groupEP);
currentMemoryStream = new MemoryStream(receive_byte_array);
received_data = Image.FromStream(currentMemoryStream);
return received_data;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
listener.Close();
return null;
}
public void closeConnection()
{
listener.Close();
stoped = true;
}
}
Кто-нибудь может мне помочь?
Заранее спасибо