TcpClient
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.24] |
|
|
TcpClient
|
Сообщ.
#1
,
|
|
|
|
есть 2 машины. Через винду могу общаться друг с другом.
Но если пытаюсь соединиться программно, то пишет, что "Требуемый адрес для своего контекста неверен" В какую сторону рыть ? (программно или настройки сети или служб) |
|
Сообщ.
#2
,
|
|
|
|
Прочитай что-нибудь про сокеты вцелом. Для TCP на одном конце надо октрывать TcpServer. Если хочется чтобы все были одинаковые, используй UDP
|
|
Сообщ.
#3
,
|
|
|
|
да он открыт и слушает на порту. Только соединиться не могу.
Не совсем понятно в чем проблемма - порты одинаковы, ip задан правильно, настройки правильно... |
|
Сообщ.
#4
,
|
|
|
|
а случайно на машинах брандмауэры не влюченя? У меня тоже проблемма была, вроде в программе всен нормально а соединение не проходить, это брандмауэр блокировал как оказалось, хотя разрешения я установил для своих програмок
|
|
Сообщ.
#5
,
|
|
|
|
Попробуй подключиться к порту, который слушает серверная часть приложения обычным браузером.
|
|
Сообщ.
#6
,
|
|
|
|
Цитата Pit-Bul @ а случайно на машинах брандмауэры не влюченя? выключен Цитата art-MiXeR @ Попробуй подключиться к порту, который слушает серверная часть приложения обычным браузером обычный браузер соединяется нормально. Но что самое странное сетевой снифер ничего не показывает ![]() тут простой код для тестирования. Может в нем что не так ? Но у меня не соединяется. Говорит, что ![]() ![]() Требуемый адрес для своего контекста неверен"System.Net.Sockets.SocketException сам код server ![]() ![]() using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace server { class Program { static void Main(string[] args) { Int32 port = 0x732; TcpListener server = new TcpListener(port); //TcpListener server = new TcpListener(ip, port); server.Start(); while(true) { Console.Write("Waiting for a connection... "); TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Connected!"); NetworkStream stream = client.GetStream(); client.Close(); } } } } Пробовал все версии конструктора client ![]() ![]() using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace client { class Program { private static int m_port = 0x732; private static TcpClient m_client = null; protected static NetworkStream m_stream = null; static void Main(string[] args) { IPHostEntry hostEntry = Dns.GetHostEntry("my_computer"); IPAddress[] ipList = hostEntry.AddressList; for (int index = 0; index < ipList.Length; ++index) { IPAddress ip = ipList[index]; IPEndPoint endPoint = new IPEndPoint(ip, m_port); try { m_client = new TcpClient(endPoint); m_stream = m_client.GetStream(); Console.WriteLine(ip.ToString() + ": " + "Connect!"); } catch (ArgumentNullException ex) { Console.WriteLine(ip.ToString() + ": ", ex); } catch (SocketException ex) { Console.WriteLine(ip.ToString() + ": ", ex); } } System.Threading.Thread.Sleep(5000); } } } |
|
Сообщ.
#7
,
|
|
|
|
![]() ![]() IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse([B]___address___[/B]), [B]___port___[/B]); Socket listener; public void StartListening() { if (endPoint == null) { //Генерируем исключение } if (listener != null) { //Генерируем исключение } listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(endPoint); listener.Listen(100); listener.BeginAccept(AcceptConnection, null); } -Added Цитата registered @ обычный браузер соединяется нормально. Но что самое странное сетевой снифер ничего не показывает ![]() тут простой код для тестирования. Может в нем что не так ? Но у меня не соединяется. Говорит, что ![]() ![]() Требуемый адрес для своего контекста неверен"System.Net.Sockets.SocketException Так я не совсем понял: что у тебя работает, а что нет |
|
Сообщ.
#8
,
|
|
|
|
art-MiXeR, странно - через сокеты все получилось. А разве TcpClient что-то другое делает ?
|
|
Сообщ.
#9
,
|
|
|
|
Не знаю, я когда через сокеты делал просто не знал про существование TcpListener'а
Если хочешь скинь мне на мыло исходники - посмотрю (т.к. приведённый тобой кусок кода вроде рабочий) Добавлено Вот кусок кода из MSDN - найди 10 отличий(или больше) ![]() ![]() ![]() using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; class MyTcpListener { public static void Main() { TcpListener server=null; try { // Set the TcpListener on port 13000. Int32 port = 13000; IPAddress localAddr = IPAddress.Parse("127.0.0.1"); // TcpListener server = new TcpListener(port); server = new TcpListener(localAddr, port); // Start listening for client requests. server.Start(); // Buffer for reading data Byte[] bytes = new Byte[256]; String data = null; // Enter the listening loop. while(true) { Console.Write("Waiting for a connection... "); // Perform a blocking call to accept requests. // You could also user server.AcceptSocket() here. TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Connected!"); data = null; // Get a stream object for reading and writing NetworkStream stream = client.GetStream(); int i; // Loop to receive all the data sent by the client. while((i = stream.Read(bytes, 0, bytes.Length))!=0) { // Translate data bytes to a ASCII string. data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); Console.WriteLine("Received: {0}", data); // Process the data sent by the client. data = data.ToUpper(); byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); // Send back a response. stream.Write(msg, 0, msg.Length); Console.WriteLine("Sent: {0}", data); } // Shutdown and end connection client.Close(); } } catch(SocketException e) { Console.WriteLine("SocketException: {0}", e); } finally { // Stop listening for new clients. server.Stop(); } Console.WriteLine("\nHit enter to continue..."); Console.Read(); } } |