Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Фоголан
0 / 0 / 0
Регистрация: 09.08.2013
Сообщений: 48
#1

.NET 4.x Передача данных по сети и ошибка "От другого компьютера за требуемое время не получен нужный отклик" - C#

09.11.2013, 17:41. Просмотров 1710. Ответов 2
Метки нет (Все метки)

Здравствуйте. Решил разобраться, как передавать файлы по сети. Для этого полазил в нете и откопал несколько примеров реализации данной задачи. Но, ни один пример не заработал в моей локальной сети. На одном компьютере работает нормально, а когда пытаюсь использовать в локальной сети, выдает ошибку подключения к серверу. "Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера"
Вот код, который отправляет файл:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.TextBox text_IP;
        private System.Windows.Forms.OpenFileDialog openFileDialog1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;
 
        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
 
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
 
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
 
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.text_IP = new System.Windows.Forms.TextBox();
            this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
            this.SuspendLayout();
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(48, 56);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(240, 20);
            this.textBox1.TabIndex = 0;
            this.textBox1.Text = "";
            this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(296, 56);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(48, 23);
            this.button1.TabIndex = 1;
            this.button1.Text = "::";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Enabled = false;
            this.button2.Location = new System.Drawing.Point(16, 152);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(128, 23);
            this.button2.TabIndex = 2;
            this.button2.Text = "Send The File To:";
            this.button2.Click += new System.EventHandler(this.button2_Click);
            // 
            // text_IP
            // 
            this.text_IP.Location = new System.Drawing.Point(152, 152);
            this.text_IP.Name = "text_IP";
            this.text_IP.Size = new System.Drawing.Size(208, 20);
            this.text_IP.TabIndex = 3;
            this.text_IP.Text = "127.0.0.1";
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(400, 266);
            this.Controls.Add(this.text_IP);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "File Sender - By Fadi Abdel-qader fadidotnet.org";
            this.ResumeLayout(false);
 
        }
        #endregion
 
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }
 
        private void button2_Click(object sender, System.EventArgs e)
        {
 
            
            FileStream fs = new FileStream(textBox1.Text,FileMode.Open);
            byte[] buffer = new byte[fs.Length];
            int len = (int)fs.Length;
            fs.Read(buffer,0,len);
            fs.Close();
            
            
            BinaryFormatter br = new BinaryFormatter ();
            TcpClient myclient = new TcpClient(text_IP.Text, 5000);
            NetworkStream myns = myclient.GetStream ();
            br.Serialize (myns,FileName);
            
            BinaryWriter  mysw = new BinaryWriter (myns);
            mysw.Write(buffer);
            mysw.Close ();
 
            myns.Close ();
            myclient.Close ();
        }
 
        string FileName;
        private void button1_Click(object sender, System.EventArgs e)
        {
 
            openFileDialog1.ShowDialog();
            textBox1.Text = openFileDialog1.FileName;
 
            FileInfo TheFile = new FileInfo(textBox1.Text); // Get The File Name
            FileName  = TheFile.Name;
            
        }
 
        private void textBox1_TextChanged(object sender, System.EventArgs e)
        {
            if (textBox1.Text.Length > 3) button2.Enabled = true; else button2.Enabled = false; 
 
        }
Код, который принимает файл:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.ListBox listBox1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;
 
        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
 
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
 
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
 
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
            this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(178)));
            this.label1.Location = new System.Drawing.Point(8, 8);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(160, 23);
            this.label1.TabIndex = 0;
            this.label1.Text = "Automatically Save to";
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(176, 8);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(176, 20);
            this.textBox1.TabIndex = 1;
            this.textBox1.Text = "C:\\";
            // 
            // listBox1
            // 
            this.listBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
            this.listBox1.Location = new System.Drawing.Point(0, 48);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(408, 134);
            this.listBox1.TabIndex = 2;
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(408, 182);
            this.Controls.Add(this.listBox1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label1);
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "File Receiver  By Fadi Abdel-qader fadidotnet.org";
            this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing);
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);
 
        }
        #endregion
 
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }
 
 
 
        NetworkStream myns;
        TcpListener mytcpl; 
        Socket mysocket;
        Thread myth;
        BinaryReader bb;
 
        void File_Receiver()
        {
            mytcpl = new TcpListener (7000);
            mytcpl.Start ();
            mysocket = mytcpl.AcceptSocket ();
            myns = new NetworkStream (mysocket);
            BinaryFormatter br = new BinaryFormatter ();
            object op;
            
            op= br.Deserialize (myns); // Deserialize the Object from Stream
 
            
            bb = new BinaryReader (myns);
            byte[] buffer = bb.ReadBytes(5000000);
        
            FileStream fss = new FileStream(@textBox1.Text + (string) op, FileMode.CreateNew, FileAccess.Write);
            fss.Write(buffer,0,buffer.Length);
            fss.Close();
            mytcpl.Stop();
 
            if (mysocket.Connected ==true)
            {
                while (true)
                {
                    File_Receiver();
                }
            }
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            myth= new Thread  (new System.Threading .ThreadStart(File_Receiver)); // Start Thread Session
            myth.Start ();
        }
 
        private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            myth.Abort ();
            mytcpl.Stop ();
        }
    }
Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2013, 17:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .NET 4.x Передача данных по сети и ошибка "От другого компьютера за требуемое время не получен нужный отклик" (C#):

При подключении второго клиента к серверу возникает ошибка "IAsyncResult не был получен" - C#
Всем привет, у меня проблема с асинхронными сокетами. Суть: Пишу простенький чат, написал сервер и клиент. С 1 клиентом работает без...

Описать класс "поезд", содержащий поля "пункт назначения", "номер поезда", "время отправления" - C#
Помогите пожалуйста с классом Описать класс «поезд», содержащий следующие закрытые поля: • название пункта назначения; • номер...

Ошибка "appcrash kernelbase.dll" при запуске другого процесса - C#
добрый день. образовалась такая вот проблема. пишу на c#, из кода одного приложения в цикле запускается другое приложение через var...

Поиск в массиве. Ошибка "Оператор "&&" не может применяться к операндам типа "bool" и "double"" - C#
Найти номер последнего минимального элемента среди положительных четных элементов, лежащих правее первого отрицательного элемента. В 24...

При вызове метода из другого файла ошибка "The type initializer for 'Openxls' threw an exception" - C#
Хелп плиз! Прога работала и вдруг перестала при вызове метода из другого файла пишет The type initializer for 'Openxls' threw an...

.NET 4.x Графический редактор и ошибка "System.Windows.Forms.Cursor" является "тип", но используется как "переменная" - C#
Всем привет.Пишу программу простейший графический редактор.Нужно,чтобы при рисовании линии на контроле panel1 запоминались начальные...

2
Uurh
3 / 3 / 0
Регистрация: 06.06.2014
Сообщений: 94
27.08.2014, 00:33 #2
Скорее всего, ты указал не верный айпи компьютера. Вот программа определяющая все айпи данного компьютера по имени, попробуй один из них, у меня работает!
0
Вложения
Тип файла: zip AllIp.zip (21.6 Кб, 18 просмотров)
Butter
Заблокирован
27.08.2014, 02:07 #3
Как минимум сетевые настройки могут не давать конектится к порту. В брандмауэре порт добавлен в разрешенные?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2014, 02:07
Привет! Вот еще темы с ответами:

Ошибка 2 "Files.StreamRider.StreamWriter" является "пространство имен", но используется как "тип" - C#
Получаю следующую ошибку { FileStream Q1 = new FileStream(&quot;C:\\C#_directory\1.txt&quot;, FileMode.Create); ...

Ошибка после конвертации метода на С++ к С#: "Неявное преобразование типа "int" в "bool" невозможно" - C#
Ошибка после преобразования метода на С++ к С#: &quot;Неявное преобразование типа &quot;int&quot; в &quot;bool&quot; невозможно&quot; Метод взят отсюда...

Ошибка CS0019: Оператор "*" не может применяться к операндам типа "decimal" и "float" - C#
Здравствуйте! Писал приложение и наткнулся на интересную ошибку (честно говоря, я не совсем понимаю причину такого ограничения. В коде//...

ошибка CS0118: "TreeView" является "пространство имен", но используется как "тип" - C#
Всем привет.Пишу WebPart для SharePoint, пытаюсь сделать TreeView для списка.Мне выдает ошибку 1) &quot;TreeView&quot; является &quot;пространство...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru