Принятие подключения

 
0
 
.NET
ava
Miller_time | 30.09.2007, 20:53
Доброго дня и суток ))

Помогайте вот прмиер серверного прилодения он должен ожидать данных от клиента.



//Server

Socket listenSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPEndPoint listenEP =new IPEndPoint(IPAddress.Any, ServerPort);
listenSocket.Bind(listenEP);
listenSocket.Listen(5);
Socket clientSocket = null;


while(true)
{

clientSocket = listenSocket.Accept();

.
.
.
.




Но он зацикливается на

clientSocket = listenSocket.Accept();


А так это цикл работает для отображдения 3д обьектов с испольщование игрокого движка TV3D. Как правильно организовать такова вида подключение ?
Comments (5)
ava
Yama | 01.10.2007, 14:55 #

Socket clientSocket = null;

public void initSocket(int ServerPort){
Socket listenSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPEndPoint listenEP =new IPEndPoint(IPAddress.TryParse("127.0.0.1"), ServerPort);
listenSocket.Bind(listenEP);
listenSocket.Listen(5);
listenSocket.BeginAccept(accept, listenSocket);
}

void accept(IAsyncResult asyncResult) {
//добавлено
clientSocket = (Socket) asyncResult;
}

ava
Miller_time | 01.10.2007, 16:51 #
Тоесть мне в цикл засунуть

accept();

или как ?


Если что извините за тупой вопрос.

added later:
Может есть какието боделлее удобные технологии для обмна данными между сервером и клиентами ???
ava
Yama | 02.10.2007, 12:58 #
ы. Миллер.
я тебе выложил привер асинхронной работы сокета.
Что это значит: когда клиент подуключается - у тебя вызывается твоя самописная ф-ция accept, там я кое что немного не дописал, потому как писал по памяти сразу в окне браузера. Сейчас дополню и, надеюсь, тебе станет все понятно :)


Socket clientSocket = null;

public void initSocket(int ServerPort){
Socket listenSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPEndPoint listenEP =new IPEndPoint(IPAddress.TryParse("127.0.0.1"), ServerPort);
listenSocket.Bind(listenEP);
listenSocket.Listen(5);
listenSocket.BeginAccept(accept, listenSocket);
}

void accept(IAsyncResult asyncResult) {
//Испраленно
clientSocket = ((Socket)asyncResult.AsyncState).EndAccept(asyncResult);

((Socket)asyncResult.AsyncState).BeginAccept(accept, listenSocket);
//=========
}



Вот тебе немного информации о сокетах:
http://msdn2.microsoft.com/en-us/library/s...ket(VS.71).aspx

З.Ы. Более простой и универсальной технологии для обмена данными по сети сейчас не существует. Все сети построенны на технологии сокетов....
ava
Miller_time | 02.10.2007, 18:32 #
Yama,

Извини конечвно я тебя новерно достал , ты не мог бы сделать пример небольшой для этого кода... smile Я промучался весь день ну зацикливается у меня приложение и все. ТОлько жалательно пример с использованием windows form. smile Заранее спасибо.
ava
Miller_time | 02.10.2007, 20:18 #
А мот мои наработки кнопка по середине формы принят означает.

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit