socket's
От: shadow-2004 Россия  
Дата: 03.04.04 04:10
Оценка:
Не подскажит ли всезнающий Олл как сделать следующее:

платформа: VC++ (эхотажный)

1. есть программа (клиент/сервер) c DGRAM сокетом
(простая прога для обмена сообщениями)
проблема в следущем:
немогу передать в recvfrom char *text; sizeof(text)
онный возвращет SOCKET_ERROR (-1)... если же передавать
char text[N]; sizeof(text) тогда все нормально работает

sendto посылает нормально char*.
В чем трабл??? просто неохота организовывать статические сообещния
ИМХО это как неочень будет хотелось бы избежать таких ограничений.

2. как заставить recvfrom слушать сокет только когда в него приходить мессага???
т.е. recvfrom весит в бесконечном цикле в ожидании а как-только в сокет поступило
сообщение recvfrom просыпается...

3. как просканировать все порты??? определить на каком порте открыт сокет???
да в принципе просто узнать какие порты открыты??? именно програмным путем (VC++)
4. как определить ip или имя машины с которой происходит обман сообщениями
например (по icq) или в чате???

wbr, Yuri


03.04.04 13:20: Перенесено модератором из '.NET' — AVK
Re: socket's
От: p0l  
Дата: 03.04.04 11:05
Оценка:
Здравствуйте, shadow-2004, Вы писали:

Очень полезными могут оказаться исходнички Миранды — клиента ICQ (поисчи на sf.net)

S2>2. как заставить recvfrom слушать сокет только когда в него приходить мессага???

S2> т.е. recvfrom весит в бесконечном цикле в ожидании а как-только в сокет поступило
S2> сообщение recvfrom просыпается...

используй select — очень удобная функция
Re: socket's
От: Michael Chelnokov Украина  
Дата: 03.04.04 13:56
Оценка: +1
Здравствуйте, shadow-2004, Вы писали:

S2>проблема в следущем:

S2> немогу передать в recvfrom char *text; sizeof(text)

sizeof(text) в данном случае — размер УКАЗАТЕЛЯ text, т.е. 4 байта.
Что-то я сомневаюсь что это то что Вы ожидаете.

S2>2. как заставить recvfrom слушать сокет только когда в него приходить мессага???

S2> т.е. recvfrom весит в бесконечном цикле в ожидании а как-только в сокет поступило
S2> сообщение recvfrom просыпается...

По-умолчанию (на блокирующем сокете) recvfrom так и работает.

S2>4. как определить ip или имя машины с которой происходит обман сообщениями


Re: socket's
От: Vladimir Levchuk Украина  
Дата: 03.04.04 15:12
Оценка:
Здравствуйте, shadow-2004, Вы писали:

S2>Не подскажит ли всезнающий Олл как сделать следующее:


S2>платформа: VC++ (эхотажный)


S2>3. как просканировать все порты???

зачем тебе все? сканировать — в лоб — пытаясь открыть соединение
определить на каком порте открыт сокет???
getsockname()
S2> да в принципе просто узнать какие порты открыты??? именно програмным путем (VC++)
сканировать

S2>4. как определить ip или имя машины с которой происходит обман сообщениями

S2> например (по icq) или в чате???
getpeername()

S2>wbr, Yuri
--------------------------
WBR,
Leva mailto:leva@nm.ru,
ICQ: 106191183
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.