Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 7 из 7
  1. #1
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±

    [ C# ] Работа с сокетами

    Эм... я не смог найти более подходящего раздела, чем данный.

    На досуге накидал небольшой класс, позволяющий подключаться к серверу и обмениваться с ним информацией, может кому и пригодится.



    Сам класс: https://gist.github.com/Seregamil/e16c2d87245d1a3b7400
    Полностью рабочий пример работы с классом: https://gist.github.com/Seregamil/5e08bb8d97fff0cb8ad0

    Пример клиентской стороны с данным классом:

    PHP код:
    using System;
    using network;

    using System.Net;
    using System.Net.Sockets;

    using System.Threading ;

    namespace 
    client
    {
        class 
    MainClass
        
    {
            public static 
    void Main (string[] args)
            {
                
    string address "127.0.0.1";
                
    int port 9595;

                
    netWork net = new netWork ();

                
    TcpClient client null;

                try{
                    
    client net.startSession (addressport);
                }
                catch(
    Exception ex){
                    
    Console.WriteLine (ex.Message);
                    return;
                }

                
    Thread thread = new Thread (
                                                
    delegate(){ 
                                                    
    timernetclient ) ;    
                                                }
                                            );

                
    thread.Start ();

                
    Console.WriteLine ("Connected!");
            
    sendnet.sendText (clientConsole.ReadLine () );

                goto 
    send;
            }

            public static 
    void timer(netWork netTcpClient client){
                
    Console.WriteLine ("Listening... {0}"client.ToString());

                
    string text string.Empty;

                while ( 
    true ) {

                    
    text net.readText (client);
                    if (
    text == string.Empty)
                        break;

                    
    Console.WriteLine ("server sended -> " text);
                }

                
    Console.WriteLine ("Stoped.");
            }
        }

    Последний раз редактировалось Seregamil; 20.04.2015 в 19:24.

  2. Пользователь сказал cпасибо:
    untonyst (17.04.2015)
  3. #2
    Аватар для IceShock
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.12.2014
    Адрес
    Nikolayev
    Сообщений
    18
    Репутация:
    8 ±
    Прикольно, но жаль только что один метод для отправки информации, и то лишь может посылать сообщения. Хоть и есть для таких дел SAMPFUNCS API на С++, хотелось бы увидеть подобную вещь на си шарпе.
    Сложно ли отправлять RPC пакеты на сервак?

  4. #3
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Цитата Сообщение от IceShock Посмотреть сообщение
    Прикольно, но жаль только что один метод для отправки информации, и то лишь может посылать сообщения. Хоть и есть для таких дел SAMPFUNCS API на С++, хотелось бы увидеть подобную вещь на си шарпе.
    Сложно ли отправлять RPC пакеты на сервак?
    Всё можно реализовать.

  5. #4
    Аватар для IceShock
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.12.2014
    Адрес
    Nikolayev
    Сообщений
    18
    Репутация:
    8 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Всё можно реализовать.
    Не накинешь небольшой пример если не сложно?)) Например вызов какой-то удалённой процедуры сервера, OnPlayerDeath допустим.

  6. #5
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Цитата Сообщение от IceShock Посмотреть сообщение
    Не накинешь небольшой пример если не сложно?)) Например вызов какой-то удалённой процедуры сервера, OnPlayerDeath допустим.
    Скачаю на комп визуалку - накину.

  7. #6
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Подкорректировал класс, работоспособность ПОЛНАЯ.

     Screen


    Пример клиентской стороны с данным классом:

    PHP код:
    using System;
    using network;

    using System.Net;
    using System.Net.Sockets;

    using System.Threading ;

    namespace 
    client
    {
        class 
    MainClass
        
    {
            public static 
    void Main (string[] args)
            {
                
    string address "127.0.0.1";
                
    int port 9595;

                
    netWork net = new netWork ();

                
    TcpClient client null;

                try{
                    
    client net.startSession (addressport);
                }
                catch(
    Exception ex){
                    
    Console.WriteLine (ex.Message);
                    return;
                }

                
    Thread thread = new Thread (
                                                
    delegate(){ 
                                                    
    timernetclient ) ;    
                                                }
                                            );

                
    thread.Start ();

                
    Console.WriteLine ("Connected!");
            
    sendnet.sendText (clientConsole.ReadLine () );

                goto 
    send;
            }

            public static 
    void timer(netWork netTcpClient client){
                
    Console.WriteLine ("Listening... {0}"client.ToString());

                
    string text string.Empty;

                while ( 
    true ) {

                    
    text net.readText (client);
                    if (
    text == string.Empty)
                        break;

                    
    Console.WriteLine ("server sended -> " text);
                }

                
    Console.WriteLine ("Stoped.");
            }
        }

    Последний раз редактировалось Seregamil; 20.04.2015 в 19:23.

  8. #7
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Обновил класс и пример работы с ним. Добавил с примере получение данных от сервера.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •