Windows Sockets отправляет поток строк - PullRequest
0 голосов
/ 05 декабря 2011

Я пытаюсь отправить поток строк через соединение через сокет TCP. Проблема в том, что Windows Sockets принимает только массив данных const char. Каков наилучший и наиболее эффективный способ отправки типа данных stringstream с использованием сокетов?

char *szMessage="Hello World";
send(Socket,szMessage,strlen(szMessage),0);

Я хочу изучить другую библиотеку сокетов, если для этой работы недостаточно библиотеки собственных сокетов Windows. Также я только начал использовать библиотеки Boost C ++ для многопоточности, и их библиотека сокетов выглядит немного более продвинутой, но я не уверен, поддерживает ли она отправку stringstream.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

stringstream предоставляет функции для получения const char*, см. Документацию :

std::stringstream ss( ... );

ss.str().c_str(); // now the const char *

send(Socket,ss.str().c_str(),ss.str().length(),0);
0 голосов
/ 05 декабря 2011

Целью API сокета является отправка байтов.Тип данных байтов в C ++: char.

Чтобы отправить более сложный тип данных через сокет, вам нужен протокол.Windows предоставляет (DCE) RPC.Многие люди используют SOAP.Есть много других.

A stringsrteam содержит символы.Если вы контролируете оба конца соединения, разница между символами и байтами может быть не важна для вас.Если вы этого не сделаете, это может быть очень важно, так как оба конца могут не согласиться с интерпретацией, если вы не уверены, что оба используют одинаковую кодировку символов.

...