Как отправить и получить массив символьных указателей char * argv [] с сервера на клиент в программировании сокетов Linux - PullRequest
0 голосов
/ 01 декабря 2010

У меня есть массив char *, такой как

 char *options[n] ; // n = 2 just for example . 

 options[0] = "How to";

 options[1] = "Send";

Как отправить «опции» с сервера на клиент, используя всего один вызов функции, такой как send.Так как прототип отправки подобен этому int send(int sockfd, const void *msg, int len, int flags); и receive is int recv(int sockfd, void *buf, int len, int flags);, я не уверен, как привести «опции» так, чтобы отправка и получение могли происходить за один вызов функции.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Вы должны отправить фактические строки символов.Указатели являются адресами памяти на вашем компьютере и доступны только для вашей программы.

Даже если клиент и сервер находились на одной машине, ОС блокировала бы любую попытку доступа к памяти программ клиента.

0 голосов
/ 01 декабря 2010

Отправка указателя не отправляет данные. Для того, чтобы вы могли передавать подобные строки, вам нужно либо придумать протокол для отправки данных, либо гарантировать, что отправитель и получатель - это один и тот же процесс (или, по крайней мере, совместно использовать одну и ту же память в одном месте) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...