2011-07-28 5 views
0

Я делаю небольшую программу для связи сокетов в C#. Here're мои коды: Клиент (отправитель):Ошибка связи сокета

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 

namespace Client 
{ 
class Program 
{ 
    static Socket sck; //vytvor socket 
    static void Main(string[] args) 
    { 
     sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
     IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234); //nastav premennú loacalEndPoint na lokálnu ip a port 1234 
     try //Skús sa 
     { 
      sck.Connect(localEndPoint); // pripojiť 

     } 
     catch { //ak sa to nepodarí 
      Console.Write("Unable to connect to remote ip end point \r\n"); //vypíš chybovú hlášku 
      Main(args); 
     } 

     Console.Write("Enter text: "); 
     string text = Console.ReadLine(); 
     byte[] data = Encoding.ASCII.GetBytes(text); 
     sck.Send(data); 
     Console.Write("Data sent!\r\n"); 
     Console.Write("Press any key to continue..."); 
     Console.Read(); 
     sck.Close(); 
    } 
} 
} 

сервера (данные ресивер):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 


namespace Server 
{ 
class Program 
{ 
    static byte[] Buffer { get; set; } //vytvor Buffer 
    static Socket sck; 

    static void Main(string[] args) 
    { 
     sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //vytvor Socket 
     sck.Bind(new IPEndPoint(0, 1234)); 
     sck.Listen(80); 
     Socket accepted = sck.Accept(); 
     Buffer = new byte[accepted.SendBufferSize]; 
     int bytesRead = accepted.Receive(Buffer); 
     byte[] formatted = new byte[bytesRead]; //vytvor novú Array a jej dĺžka bude dĺžka priatých infomácii 
     for(int i=0; i<bytesRead;i++){ 
      formatted[i] = Buffer[i]; //načítaj z Buffer do formatted všetky priate Bajty 

     } 
     string strData = Encoding.ASCII.GetString(formatted); //z ASCII hodnôt urob reťazec 
     Console.Write(strData + "\r\n"); //vypíš data 
     sck.Close(); //ukonči spojenie 


    } 
} 

} Моя проблема: В клиентской программе я отправки данных на порт 1234 к локальному ip. Но я не могу подключиться. Я пробовал порт 80 и он подключился. Так, пожалуйста, где моя проблема? Как я могу подключиться ко всем портам? Пожалуйста, игнорируйте комментарии в коде и, пожалуйста, помогите мне.

+0

Проверьте брандмауэр. – Odys

+0

Эти программы регистрируют (разблокировать) порт при установке их. – Odys

+0

я сейчас не работает. у меня есть код , и у меня есть все брандмауэры turne d off. Где может быть проблема? – FrewCen

ответ

1

Вы слушаете порт 80, то есть порт, к которому должна подключиться ваша клиентская программа. «1234» - это ЛОКАЛЬНЫЙ порт, к которому привязан сервер. Ничего не слушает в этом порту.

1

, на котором ip слушает сервер? вы проверили с netstat -an | НАЙТИ "СЛУШАТЬ" | НАЙТИ "1234"? (Примечание: замените прослушивание с помощью своего языкового представления ...).

0 не может быть 127.0.0.1 но первый назначен IP-адрес первого сетевого адаптера ... (хотя 0 должны слушать все интерфейсы ... но увы ...

Я всегда использовать IP- адресов в обоих, клиент и сервер

НТН

Марио

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