2013-11-09 2 views
2
private void btnStart_Click(object sender, EventArgs e) 
     { 

try 
      { 
       epLocal = new IPEndPoint(IPAddress.Parse(txtIP1.Text), Convert.ToInt32(txtPort1.Text)); 
       sck.Bind(epLocal); 
       epRemote = new IPEndPoint(IPAddress.Parse(txtIP2.Text), Convert.ToInt32(txtPort2.Text)); 
       //Here Error Occures I dont know what is my mistake? 
       sck.Bind(epRemote); 
       byte[] buffer = new byte[1500]; 
       sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer); 
       btnStart.Text = "Connected"; 
       btnStart.Enabled = false; 
       btnSend.Enabled = true; 
       txtMessage.Focus(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

ответ

2

Вы связывание же сокета для Mutiple объектов конечных точек, поэтому вы получаете исключение InvalidArgument, Вы можете связать один сокет только один Объект IPEndPoint за раз.

Как вы пытаетесь слушать на общественном IP-адрес и Local IP, пожалуйста, попробуйте это один

IPEndPoint ep = new IPEndPoint(IPAddress.Any, yourportnumber); 
sck.Bind(ep) ; 

это создаст слушатель, что прослушивание всех IP-адрес вашего компьютера, В противном случае вам лучше использовать отдельный объект сокета

Если бы я тебя, я бы не разобрать локальный IPAddress из textbox вместо я хотел бы использовать что-то вроде IPAddress.Loopback

+0

Спасибо, здесь, в качестве основного уровня im, соединяющий мой собственный ip как txtIP1 и txtIP2: 192.168.0.102, а порт - 91 и 92 соответственно. доступность порта проверяется командой netstat -a, и они доступны, я смущен, что попробовать дальше. – User23289

+0

sck - это сокет или TCPSocket? –

+0

Я обновил свой ответ, Это поможет вам –

Смежные вопросы