2012-06-06 4 views
0

Сэр,Объект One Socket для отправки и приема в c

Я хотел узнать, как можно использовать один объект сокета для отправки и получения данных?

+0

Какая операционная система? Что вы подразумеваете под Объектом? Вы имеете в виду TCP? – Jay

+1

«Сэр»,? А как насчет мэмов? – glglgl

ответ

1

Стандарт C не имеет интерфейса сокетов.

Найти интерфейс сокетов для вашей ОС (Posix, Windows, другие другие). Прочтите документацию. После того, как вы откроете сокет, будут выполняться функции для отправки и получения данных.

Сокет TCP представляет собой двунаправленный канал связи, поэтому вы можете использовать оба в одном и том же сокете, не делая ничего особенного. Как сделать так, чтобы это произошло, например, является ли physical layer полным или полудуплексным.

Будьте осторожны с тем, что происходит, когда один из них блокируется - если оба конца сокета пытаются записать, и все буферы заполнены в обоих направлениях, тогда вы можете оказаться в тупике, потому что ни одна из сторон не может писать какие-либо больше, пока другая сторона не прочитает что-то, чтобы освободить место в буферах. То же самое происходит, если обе стороны блокируют чтение, и никто не пишет.

0

Если вы хотите отправить данные, вы вызываете send(); когда вы хотите получать данные, вы вызываете recv(). Это действительно не сложнее.

Если вы просите механизм передачи данных по сети, я предлагаю вам собрать сетевые книги Стивенса (и пропустить руководство Beej, для всего, что свято).

Смежные вопросы