Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.20.238.187] |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста?
Как отправить 1 или 2 переменные от ClientSocket и получить их ServerSocket. Подскажите хотя бы один пример работы с SendBuf(void *, int count) и ReceiveBuf(void *,int count); |
Сообщ.
#2
,
|
|
|
сначала создаешь сервер:
ServerSocket1->Open(); потом клиента: ClientSocket1->Host = "имя сервера"; ClientSocket1->Open(); передача: ClientSocket1->Socket->SendText("....."); ServerSocket1->Socket->Connections[активное соединение]->SendText("..."); прием: //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { Beep(); Memo1->Text=Socket->ReceiveText(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Beep(); Memo1->Text=Socket->ReceiveText(); } //--------------------------------------------------------------------------- В принципе работает |
Сообщ.
#3
,
|
|
|
Как работать с SendText() и ReceiveText() это понятно и работает.
А вот как мне переслать допустим переменную структуры card, что ниже от клиента к серверу и обратно после обработки сервером. struct card { int suit; int pack; int back; enum move {player,computer}; }; |
Сообщ.
#4
,
|
|
|
See SendBuf(buf, length buf)
|
Сообщ.
#5
,
|
|
|
Все, структура отлично гоняется от клиента к серверу и наоборот.
А вот подскажите пожалуйста, как из присланного потока выделить текстовое сообщение или ту же структуру в буфере. Как узнать клиенту или серверу, что к нему именно пришло. |
Сообщ.
#6
,
|
|
|
See ReadBuf(buf, length buf)
buf - твоя структура. |
Сообщ.
#7
,
|
|
|
Цитата Александр, 31.07.02, 20:21:34 А вот подскажите пожалуйста, как из присланного потока выделить текстовое сообщение или ту же структуру в буфере. Как узнать клиенту или серверу, что к нему именно пришло. Это ты уже сам должен делать - типа перед текстом или структурой ввести дополнительное поле-идентификатор сообщения. Например, считал в char* buf нечто, посмотри buf[0] - если, ех., это 1, то в с buf+1 - текст, а если 2 - то структура. Ну и посылку надо организовать соответственно. |
Сообщ.
#8
,
|
|
|
Примерно так создается посылка нескольких или разных данных.
Создал структуру struct packet { int data_length;//длинна присоединенных данных int packet_type;//тип - ход, замес, сообщение в чате итд } Потом посылаю ее вместе с данными (спереди прикрепляю) packet pc; byte *buffer; // резервирую память и заполняю как надо buffer //и посылаю его Send(buffer,sizeof(pc)+pc.data_length); //освобождаю buffer; Free(buffer); А получаю в 2 приема Receive(&pc,sizeof(pc)); switch (pc.packet_type) { case 1: Receive(&var1,pc.data_length); break; case 2: Receive(&var2,pc.data_length); break; .................. } Вот примерно так... http://www.durbeccel.narod.ru/ |