Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 13:04   #1
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию простой Socket для сервера

Помогите пожалуйста сделать самый простой сервер, для получения сообщения от клиента и вывода в TextBox на WinForms. Пытался сделать методом для консоли, то тогда окно тупо висело.
Заранее спасибо.
Максим139 вне форума Ответить с цитированием
Старый 07.11.2011, 13:54   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

покажите, как делали
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 07.11.2011, 14:04   #3
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Цитата:
int recieve;
byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 1212);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
newsock.Bind(ipep);
newsock.Listen(3);
Socket client = newsock.Accept();
IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;
while (true)
{
data = new byte[1024];
recieve = client.Receive(data);
if (recieve == 0)
break;
ServerLog.AppendText(Encoding.ASCII .GetString(data, 0, recieve));
client.Send(data, recieve, SocketFlags.None);
}
ServerLog.AppendText("Disconnected from " + clientep.Address);
client.Close();
newsock.Close();
Ну как-то так, хотя чёрт его знает...
Максим139 вне форума Ответить с цитированием
Старый 07.11.2011, 14:49   #4
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Цитата:
TcpListener tcpl = new TcpListener(1252);
tcpl.Start();
Socket Socki = tcpl.AcceptSocket();
try
{
if (Socki.Connected)
{
ServerLog.AppendText("Кто-то вошёл");
goto asd;
}
}
catch (SocketException j)
{
ServerLog.AppendText("123");
}
Ну, я так понял, что пока кто-то не войдёт, и не сработает goto, прога будет висеть в ожидании..
Как это исправить?

Последний раз редактировалось Максим139; 07.11.2011 в 14:59.
Максим139 вне форума Ответить с цитированием
Старый 09.11.2011, 04:15   #5
Amidamar0
Новичок
Джуниор
 
Регистрация: 09.11.2011
Сообщений: 1
По умолчанию

чтобы програма не зависала при ожидании нужно твой цикл while(true) запихнуть в отдельный поток..

п.с. крайне не желаиельно использовать goto...
Amidamar0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка IP для создания WEB сервера для моего сайта valerka92 Помощь студентам 9 31.08.2011 00:38
PHP для веб-сервера Terazoid C/C++ Сетевое программирование 0 24.03.2011 01:52
Выбор операционки для веб сервера iankov Операционные системы общие вопросы 6 25.09.2009 14:00
Выбор сервера для почты Pavel_Ine Софт 2 05.05.2009 20:39
ЧАТЮ для клиента и сервера -HunteR- Работа с сетью в Delphi 27 18.04.2008 09:30