Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли использовать WinSock в C#? 
:(
    Опции темы
MaxUst
Дата 24.11.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



Подскажите, можно ли использовать WinSock в C#? Если да, то как? В инете все примеры для C/C++, а для C#  ничего нет. 
PM MAIL   Вверх
mr.DUDA
Дата 24.11.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Примеров полно, например см. описание класса System.Net.Sockets.Socket:

Код
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

public class GetSocket
{
    private static Socket ConnectSocket(string server, int port)
    {
        Socket s = null;
        IPHostEntry hostEntry = null;
        
        // Get host related information.
        hostEntry = Dns.GetHostEntry(server);

        // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
        // an exception that occurs when the host IP Address is not compatible with the address family
        // (typical in the IPv6 case).
        foreach(IPAddress address in hostEntry.AddressList)
        {
            IPEndPoint ipe = new IPEndPoint(address, port);
            Socket tempSocket = 
                new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            tempSocket.Connect(ipe);

            if(tempSocket.Connected)
            {
                s = tempSocket;
                break;
            }
            else
            {
                continue;
            }
        }
        return s;
    }

    // This method requests the home page content for the specified server.
    private static string SocketSendReceive(string server, int port) 
    {
        string request = "GET / HTTP/1.1\r\nHost: " + server + 
            "\r\nConnection: Close\r\n\r\n";
        Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
        Byte[] bytesReceived = new Byte[256];
       
        // Create a socket connection with the specified server and port.
        Socket s = ConnectSocket(server, port);

        if (s == null)
            return ("Connection failed");
      
        // Send request to the server.
        s.Send(bytesSent, bytesSent.Length, 0);  
        
        // Receive the server home page content.
        int bytes = 0;
        string page = "Default HTML page on " + server + ":\r\n";

        // The following will block until te page is transmitted.
        do {
            bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
            page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
        }
        while (bytes > 0);
        
        return page;
    }
    
    public static void Main(string[] args) 
    {
        string host;
        int port = 80;

        if (args.Length == 0)
            // If no server name is passed as argument to this program, 
            // use the current host name as the default.
            host = Dns.GetHostName();
        else
            host = args[0];

        string result = SocketSendReceive(host, port); 
        Console.WriteLine(result);
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
MaxUst
Дата 26.11.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
Sergio
Дата 18.1.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



mr.DUDA, скопировал код но ничего программа не делает  smile . Розкажи подробнее. Мне нужно создать на подобии чата клиент и сервер ( сервер только принимает) по ТСП

Это сообщение отредактировал(а) Sergio - 18.1.2007, 14:28
PM MAIL ICQ   Вверх
mr.DUDA
Дата 18.1.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Цитата(Sergio @  18.1.2007,  13:20 Найти цитируемый пост)
mr.DUDA, скопировал код но ничего программа не делает   . Розкажи подробнее.

Это всего лишь был пример с использованием класса сокета, выдранный из MSDN.

Цитата(Sergio @  18.1.2007,  13:20 Найти цитируемый пост)
Мне нужно создать на подобии чата клиент и сервер ( сервер только принимает) по ТСП

Ну тогда ремоутинг будет использовать проще всего. Это слой над протоколами типа TCP/IP, который позволяет создавать объекты и вызывать его методы с клиента, когда объект физически находится на сервере. Например, создали объект Chat, вызываем метод AddMessage с передачей строки которую ввёл юзер в чате - этот вызов придёт на сервер, можно поместить строку в статик-список строк или в файл и т.д.

З.Ы. примеров по remoting-у на форуме достаточно много.


--------------------
user posted image
PM MAIL WWW   Вверх
Sergio
Дата 19.1.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



спасибо
PM MAIL ICQ   Вверх
Nickey
Дата 20.2.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



mr.DUDA, а нельзя точно такойже пример,загружающий страницу,но с использование асинхронных сокетов? А то я никак не разбирусь.
PM MAIL   Вверх
mr.DUDA
Дата 21.2.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232





--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.