PDA

Просмотр полной версии : [F.A.Q] [ C# ] Работа с сокетами



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

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

http://s7.hostingkartinok.com/uploads/images/2015/04/c46533875f1413f0a7d8e102714dbb3e.png

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

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



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 (address, port);
}
catch(Exception ex){
Console.WriteLine (ex.Message);
return;
}

Thread thread = new Thread (
delegate(){
timer( net, client ) ;
}
);

thread.Start ();

Console.WriteLine ("Connected!");
send: net.sendText (client, Console.ReadLine () );

goto send;
}

public static void timer(netWork net, TcpClient 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.");
}
}
}

IceShock
31.12.2014, 12:11
Прикольно, но жаль только что один метод для отправки информации, и то лишь может посылать сообщения. :smile: Хоть и есть для таких дел SAMPFUNCS API на С++, хотелось бы увидеть подобную вещь на си шарпе.:dntknw:
Сложно ли отправлять RPC пакеты на сервак?

Seregamil
04.01.2015, 10:56
Прикольно, но жаль только что один метод для отправки информации, и то лишь может посылать сообщения. :smile: Хоть и есть для таких дел SAMPFUNCS API на С++, хотелось бы увидеть подобную вещь на си шарпе.:dntknw:
Сложно ли отправлять RPC пакеты на сервак?

Всё можно реализовать.

IceShock
21.01.2015, 02:04
Всё можно реализовать.

Не накинешь небольшой пример если не сложно?)) Например вызов какой-то удалённой процедуры сервера, OnPlayerDeath допустим.

Seregamil
22.01.2015, 05:20
Не накинешь небольшой пример если не сложно?)) Например вызов какой-то удалённой процедуры сервера, OnPlayerDeath допустим.

Скачаю на комп визуалку - накину.

Seregamil
16.04.2015, 18:09
Подкорректировал класс, работоспособность ПОЛНАЯ.

http://s7.hostingkartinok.com/uploads/images/2015/04/c46533875f1413f0a7d8e102714dbb3e.png

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



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 (address, port);
}
catch(Exception ex){
Console.WriteLine (ex.Message);
return;
}

Thread thread = new Thread (
delegate(){
timer( net, client ) ;
}
);

thread.Start ();

Console.WriteLine ("Connected!");
send: net.sendText (client, Console.ReadLine () );

goto send;
}

public static void timer(netWork net, TcpClient 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
Обновил класс и пример работы с ним. Добавил с примере получение данных от сервера.