Программирование сокетов - PullRequest
1 голос
/ 03 марта 2009

Пытаюсь создать серверное приложение на c #. В коде использую класс TcpListener.


    TcpListener t = new TcpListener(5555);
    t.Start();

Однако он выдает сообщение об ошибке: Неверный токен '(' в объявлении класса, структуры или интерфейса.

Требуются ли дополнительные ссылки?
Пожалуйста, помогите.


namespace WindowsApplication1
{
    public partial class lanmessenger : Form
    {
        [DllImport("user32.dll")]
        static extern bool HideCaret(IntPtr hWnd);

        public lanmessenger()
        {
            InitializeComponent();
        }


        private void textBox1_TextChanged(object sender, EventArgs e)
        {


        }
        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder(this.textBox1.Text);
            sb.AppendLine(this.textBox2.Text);
            this.textBox1.Text = sb.ToString();
            this.textBox2.Text = "\0";
            HideCaret(this.textBox1.Handle);
        }
        private void textBox1_MouseClick(object sender, MouseEventArgs e)
        {
            HideCaret(this.textBox1.Handle);
        }
        StreamWriter streamWriter;
        StreamReader streamReader;
        NetworkStream networkStream;
        TcpListener t = new TcpListener(5555);
        t.Start();




    }
}

Это полный исходный код. Не могу найти ошибку.

Ответы [ 5 ]

2 голосов
/ 03 марта 2009

Работает нормально для меня. Вам необходимо добавить следующую строку в ваш код.

с использованием System.Net.Sockets;

1 голос
/ 03 марта 2009

Разве вы не забыли поместить этот код в какой-то метод какого-то класса?

1 голос
/ 03 марта 2009

Если у вас есть ссылка на System.dll в вашем проекте и есть оператор использования для пространства имен System.Net.Sockets, в коде, который вы предоставили, нет ничего плохого.

Похоже, у тебя слишком много "(" где-то валяется.

Ваш вызов t.Start () должен быть в методе класса. Это неправильно:

class lanmessenger
{
    ...
    TcpListener t = new TcpListener(5555);  // ok to initialize like this
    t.Start();  // wrong...put this in a method
}

Это верно:

class lanmessenger
{
    TcpListener t = new TcpListener(5555);  // ok to initialize like this

    public lanmessenger
    {
        InitializeComponent();
        t.Start();  // put it here
    }    
}
0 голосов
/ 04 марта 2009

Вы уверены, что не хотите использовать WCF для серверного приложения?

0 голосов
/ 03 марта 2009

Да, проблема здесь только в том, что этот код не находится внутри метода в вашем классе:

t.Start ();

Вот что дает вам конкретную ошибку компилятора. Вы не можете сделать вызов метода внутри самого класса, который должен быть внутри какого-то другого метода. Синтаксически говоря, все остальное прекрасно там, где оно есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...