本文整理汇总了C++中Connection::Receive方法的典型用法代码示例。如果您正苦于以下问题:C++ Connection::Receive方法的具体用法?C++ Connection::Receive怎么用?C++ Connection::Receive使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Connection
的用法示例。
在下文中一共展示了Connection::Receive方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Accept
// 新設 : 1999 Feb 15th
// 変更 : 1999 May 12th
// 受け付け受理か,Busy かを 1byte で送っていたが,EusLisp が読めないよう
// なので文字列でこれを送信する事にする
// 変更 : 1999 Jul 7th : 接続された番号を返すようにする
// ----
// 動作 : 途中に接続要求してきた client に対して,accept する
// 返値 : 接続 OK ならば、接続された MultiSocket 内部での番号を返す
// : 接続 FAIL なら TL_FAIL
int MultiSocket::Accept()
{
int s, i, debug=0;
struct sockaddr_in caddr; // クライアント側のアドレス情報を入れるところ
char new_name[MAX_STRING], com[10];
Connection *tmpconnection;
if (debug) tl_message ("%s : start", name);
socklen_t len = (socklen_t)sizeof(caddr);
s = accept (socket_fd, (struct sockaddr *)&caddr, &len);
if (debug) tl_message ("Socket accepted");
for( i=0; i<MAX_MULTI_SOCKET; i++)
{
if (i==MAX_MULTI_SOCKET-1 && connection[i]!=NULL)
{
// もういっぱいで接続不可能である事を向こうに知らせる
tl_message ("Too busy");
strcpy (com, CONNECTION_BUSY);
connection[i]->my_send (s, com, 4);
// Lisp, C 共通仕様で文字列終了を意味する '\n' を送信
com[0] = '\n';
connection[i]->my_send (s, com, 1);
return FALSE;
}
if (connection[i]==NULL)
{
tmpconnection = new Connection( CONNECTION_SOCKET);
tmpconnection->FdRead(s);
tmpconnection->FdWrite(s);
tmpconnection->FpRead(fdopen( s,"r+"));// Read&Write
tmpconnection->FpWrite(tmpconnection->FpRead());
if (debug) tl_message ("System allows this plugin : ");
strcpy( com, CONNECTION_OK);
tmpconnection->my_send (s, com, 4); // 受け付け OK の信号を向こうに知らせる
// Lisp, C 共通仕様で文字列終了を意味する '\n' を送信
com[0] = '\n';
tmpconnection->my_send (s, com, 1);
if (debug) tl_message ("Now reading client name...");
tmpconnection->Receive(CONNECTION_STRING, new_name);
if (debug) tl_message ("Client Name = %s", new_name);
tmpconnection->SetName(new_name);
connection[i] = tmpconnection;
return i;
}
}
return FALSE;
}