本文整理汇总了C++中close_client函数的典型用法代码示例。如果您正苦于以下问题:C++ close_client函数的具体用法?C++ close_client怎么用?C++ close_client使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了close_client函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: remote_recv_cb
static void
remote_recv_cb(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) {
struct remote_context *remote;
struct client_context *client;
remote = stream->data;
client = remote->client;
if (nread > 0) {
reset_timer(remote);
uv_read_stop(&remote->handle.stream);
int clen = nread + PRIMITIVE_BYTES;
uint8_t *c = remote->buf + HEADER_BYTES;
int rc = crypto_encrypt(c, (uint8_t*)buf->base, nread);
if (!rc) {
forward_to_client(client, c, clen);
} else {
logger_log(LOG_ERR, "invalid tcp packet");
close_client(client);
close_remote(remote);
}
} else if (nread < 0){
if (nread != UV_EOF) {
logger_log(LOG_ERR, "receive from %s failed: %s", client->target_addr, uv_strerror(nread));
}
close_client(client);
close_remote(remote);
}
}
开发者ID:nsdown,项目名称:xsocks-1,代码行数:30,代码来源:xsocksd_remote.c
示例2: while
void *response_handler(void *arg) {
int nfd;
fd_set read_set;
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 100;
while (1) {
FD_ZERO(&read_set);
FD_SET(sock, &read_set);
nfd = select(sock + 1, &read_set, NULL, NULL, &tv);
if (nfd > 0) {
int len, recvIsDone = 0;
user->buf_len = 0;
while (!recvIsDone) {
if ((len = recv(sock, user->buf, 1, 0)) > 0) {
if(user->buf[0] == ',') {
user->type[user->buf_len++] = '\0';
// printf("%s\n", user->type);
serve_response();
recvIsDone = 1;
} else
user->type[user->buf_len++] = user->buf[0];
} else if (len == 0) {
puts("disconnected");
close_client();
} else if (len == -1) {
puts("recv failed");
close_client();
}
}
}
}
}
开发者ID:urchinfinity,项目名称:chatroom,代码行数:35,代码来源:client.c
示例3: client_recv_cb
static void
client_recv_cb(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) {
struct client_context *client = stream->data;
struct remote_context *remote = client->remote;
int clen;
if (nread > 0) {
reset_timer(remote);
uv_read_stop(&client->handle.stream);
switch (client->stage) {
case XSTAGE_HANDSHAKE:
if (verify_methods(buf->base, nread)) {
handshake(client);
} else {
logger_log(LOG_ERR, "invalid method packet");
close_client(client);
close_remote(remote);
}
break;
case XSTAGE_REQUEST:
if (verify_request(buf->base, nread)) {
request_start(client, buf->base);
} else {
logger_log(LOG_ERR, "invalid request packet");
close_client(client);
close_remote(remote);
}
break;
case XSTAGE_FORWARD:
clen = nread + PRIMITIVE_BYTES;
uint8_t *c = client->buf + HEADER_BYTES;
int rc = crypto_encrypt(c, (uint8_t*)buf->base, nread);
if (rc) {
logger_log(LOG_ERR, "encrypt failed");
close_client(client);
close_remote(remote);
}
forward_to_remote(remote, c, clen);
break;
default:
break;
}
} else if (nread < 0) {
if (nread != UV_EOF) {
char addrbuf[INET6_ADDRSTRLEN + 1] = {0};
uint16_t port = ip_name(&client->addr, addrbuf, sizeof addrbuf);
logger_log(LOG_ERR, "receive from %s:%d failed: %s", addrbuf, port, uv_strerror(nread));
}
close_client(client);
close_remote(remote);
}
}
开发者ID:road0001,项目名称:xsocks,代码行数:60,代码来源:xsocks_client.c
示例4: on_read
void on_read( SP_TestClient * client, SP_TestEvent * event )
{
char buffer[ 4096 ] = { 0 };
int bytesTransferred = recv( (int)client->mFd, buffer, sizeof( buffer ), 0 );
if( bytesTransferred <= 0 ) {
if( bytesTransferred < 0 ) {
printf( "recv fail, errno %d\n", WSAGetLastError() );
gStat.mRecvFail++;
}
close_client( client );
return;
}
for( int i = 0; i < bytesTransferred; i++ ) {
if( '\n' == buffer[i] ) client->mRecvMsgs++;
}
memset( &( event->mOverlapped ), 0, sizeof( OVERLAPPED ) );
event->mType = SP_TestEvent::eEventRecv;
event->mWsaBuf.buf = NULL;
event->mWsaBuf.len = 0;
DWORD recvBytes = 0, flags = 0;
if( SOCKET_ERROR == WSARecv( (SOCKET)client->mFd, &( event->mWsaBuf ), 1,
&recvBytes, &flags, &( event->mOverlapped ), NULL ) ) {
if( ERROR_IO_PENDING != WSAGetLastError() ) {
gStat.mWSARecvFail++;
printf( "WSARecv fail, errno %d\n", WSAGetLastError() );
close_client( client );
}
}
}
开发者ID:CCoder123,项目名称:pproj,代码行数:33,代码来源:testiocpstress.cpp
示例5: on_write
void on_write( int fd, short events, void *arg )
{
SP_TestClient * client = ( SP_TestClient * ) arg;
if( EV_WRITE & events ) {
client->mSendMsgs++;
if( client->mSendMsgs >= gMsgs ) {
snprintf( client->mBuffer, sizeof( client->mBuffer ), "quit\n" );
} else {
snprintf( client->mBuffer, sizeof( client->mBuffer ),
"mail #%d, It's good to see how people hire; "
"that tells us how to market ourselves to them.\n", client->mSendMsgs );
}
int len = send( fd, client->mBuffer, strlen( client->mBuffer ), 0 );
if( len <= 0 && EAGAIN != errno ) {
fprintf( stderr, "#%d on_write error, errno %d, %s\n", fd, errno, strerror( errno ) );
close_client( client );
} else {
if( client->mSendMsgs >= gMsgs ) close_write( client );
}
} else {
fprintf( stderr, "#%d on_write timeout\n", fd );
close_client( client );
}
}
开发者ID:CCoder123,项目名称:pproj,代码行数:28,代码来源:teststress.cpp
示例6: on_read
/**
* This function will be called by libevent when the client socket is
* ready for reading.
*/
void
on_read(int fd, short ev, void *arg)
{
struct client *client = (struct client *)arg;
int len;
len = recv(fd, client->buffer, sizeof( client->buffer ) - 1, 0);
if (len == 0) {
printf("Client(%d) disconnected.\n",fd);
close_client(client, fd);
return;
}
else if (len < 0 && WSAEWOULDBLOCK != WSAGetLastError() ) {
printf("recv(%d) fail, len %d, errno %d\n", fd, len, WSAGetLastError() );
}
if( len > 0 ) {
client->total = len;
client->wlen = 0;
if(0 != event_add( &( client->ev_write ), NULL ) ) {
close_client( client, fd );
}
} else {
if( 0!= event_add( &( client->ev_read ), NULL ) ) {
close_client( client, fd );
}
}
}
开发者ID:JCGit,项目名称:Ggame,代码行数:33,代码来源:echo-iocp.c
示例7: on_buf_read
/**
* handle outstanding reads on the client socket
*/
static void on_buf_read(struct bufferevent *bev, void *arg) {
client_t *client = (client_t *)arg;
size_t buffer_left, bytes_read;
char *end;
assert(client);
assert(client->fd > 0);
assert(client->request);
if((!client) || (!client->request) || (client->fd < 1)) {
ERROR("Bad client struct in on_buf_read");
close_client(client);
return;
}
DEBUG("Read event (state %d) on fd %d", client->state, client->fd);
buffer_left = MAX_REQUEST_SIZE - strlen(client->request);
if(buffer_left <= 0) {
ERROR("Out of request space on fd %d. Aborting.", client->fd);
close_client(client);
}
bytes_read = bufferevent_read(client->buf_ev,
(void*)&client->request[strlen(client->request)],
buffer_left - 1);
if(bytes_read == -1) {
if (errno != EINTR) {
/* if EINTR, we'll just pick it back up on the next epoll */
ERROR("Read error on fd %d", client->fd);
close_client(client);
}
return;
}
DEBUG("Read %d bytes on fd %d", bytes_read, client->fd);
end = client->request;
while(*end && (*end != '\n') && (*end != '\r')) {
end++;
}
if(*end) {
*end = '\0';
client->state = CLIENT_STATE_WAITING_REPLY;
DEBUG("Got client request on fd %d: %s", client->fd, client->request);
/* hand this off to set up a response object */
handle_request(client);
} else {
DEBUG("Partial request read on fd %d", client->fd);
}
}
开发者ID:breu,项目名称:evgopherd,代码行数:60,代码来源:main.c
示例8: _be_ssl_accept
int _be_ssl_accept(se_ptr_t *ptr)
{
epdata_t *epd = ptr->data;
if(!epd) {
return 0;
}
if(!epd->ssl) {
epd->ssl = SSL_new(ssl_ctx);
if(epd->ssl == NULL) {
LOGF(ERR, "SSL_new");
close_client(epd);
return 0;
}
if(SSL_set_fd(epd->ssl, epd->fd) != 1) {
SSL_free(epd->ssl);
epd->ssl = NULL;
LOGF(ERR, "SSL_set_fd");
close_client(epd);
return 0;
}
if(ssl_epd_idx > -1) {
if(SSL_set_ex_data(epd->ssl, ssl_epd_idx, epd) != 1) {
SSL_free(epd->ssl);
LOGF(ERR, "SSL_set_ex_data");
int fd = epd->fd;
free(epd);
close(fd);
return 0;
}
}
}
int ret = SSL_accept(epd->ssl);
if(ret != 1) {
int ssl_err = SSL_get_error(epd->ssl, ret);
if(ssl_err != SSL_ERROR_WANT_READ && ssl_err != SSL_ERROR_WANT_WRITE) {
close_client(epd);
return 0;
}
return 0;
}
se_be_read(epd->se_ptr, network_be_read);
}
开发者ID:hopestar,项目名称:alilua,代码行数:52,代码来源:worker.c
示例9: respond
void respond(struct Client *c)
{
char *resp = "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nCool\r\n\r\n";
char *resp400 = "HTTP/1.1 400 Bad Request\r\n\r\n";
if (c->pstate == ERROR) {
send(c->fd, resp400, strlen(resp400), 0);
close_client(c->fd);
} else if (c->pstate == SUCCESS) {
send(c->fd, resp, strlen(resp), 0);
close_client(c->fd);
}
}
开发者ID:eavgerinos,项目名称:rea,代码行数:13,代码来源:rea.c
示例10: remote_recv_cb
static void
remote_recv_cb(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) {
struct remote_context *remote;
struct client_context *client;
remote = stream->data;
client = remote->client;
if (nread > 0) {
reset_timer(remote);
struct packet *packet = &remote->packet;
int rc = packet_filter(packet, buf->base, nread);
if (rc == PACKET_COMPLETED) {
int clen = packet->size;
int mlen = packet->size - PRIMITIVE_BYTES;
uint8_t *c = packet->buf, *m = packet->buf;
assert(mlen > 0 && mlen <= MAX_PACKET_SIZE - PRIMITIVE_BYTES);
int err = crypto_decrypt(m, c, clen);
if (err) {
goto error;
}
uv_read_stop(&remote->handle.stream);
forward_to_client(client, m, mlen);
} else if (rc == PACKET_INVALID) {
goto error;
}
} else if (nread < 0){
if (nread != UV_EOF && verbose) {
char addrbuf[INET6_ADDRSTRLEN + 1];
int port = ip_name(&client->target_addr, addrbuf, sizeof(addrbuf));
logger_log(LOG_ERR, "receive from %s:%d failed: %s", addrbuf, port, uv_strerror(nread));
}
close_client(client);
close_remote(remote);
}
return;
error:
logger_log(LOG_ERR, "invalid tcp packet");
if (verbose) {
dump_hex(buf->base, nread, "invalid tcp Packet");
}
close_client(client);
close_remote(remote);
}
开发者ID:jiaoyk,项目名称:xSocks,代码行数:51,代码来源:xTproxy_remote.c
示例11: control_window_proc
//
// Handles the IDA window messages for the hidden control window.
//
static LRESULT CALLBACK control_window_proc(HWND wnd, UINT msg,
WPARAM wp, LPARAM lp)
{
switch (msg)
{
case WM_NETEVENT:
{
switch (WSAGETSELECTEVENT(lp))
{
case FD_ACCEPT:
accept_client();
break;
case FD_READ:
process_client((SOCKET)wp);
break;
case FD_CLOSE:
close_client((SOCKET)wp);
break;
}
}
break;
default:
return DefWindowProc(wnd, msg, wp, lp);
}
return 0;
}
开发者ID:jduck,项目名称:idarub,代码行数:30,代码来源:idarub.cpp
示例12: deactivate_audio
~jack_backend(void)
{
if (audio_is_active())
deactivate_audio();
close_client();
}
开发者ID:DSastre,项目名称:supercollider,代码行数:7,代码来源:jack_backend.hpp
示例13: timeout_handle
static void timeout_handle(void *ptr)
{
epdata_t *epd = ptr;
if(epd->status == STEP_READ) {
epd->keepalive = 0;
//LOGF(ERR, "Read Timeout!");
network_send_error(epd, 400, "Timeout!");
return;
//serv_status.reading_counts--;
} else if(epd->status == STEP_SEND) {
//LOGF(ERR, "Send Timeout!");
serv_status.sending_counts--;
}
if(epd->status == STEP_PROCESS && epd->L) {
LOGF(ERR, "Process Timeout(continue)");
update_timeout(epd->timeout_ptr, STEP_PROCESS_TIMEOUT);
return;
}
epd->status = STEP_WAIT;
close_client(epd);
}
开发者ID:hopestar,项目名称:alilua,代码行数:26,代码来源:worker.c
示例14: client_accept_cb
void
client_accept_cb(uv_stream_t *server, int status) {
struct client_context *client = new_client();
struct remote_context *remote = new_remote(idle_timeout);
client->remote = remote;
remote->client = client;
uv_timer_init(server->loop, remote->timer);
uv_tcp_init(server->loop, &client->handle.tcp);
uv_tcp_init(server->loop, &remote->handle.tcp);
int rc = uv_accept(server, &client->handle.stream);
if (rc == 0) {
int namelen = sizeof client->addr;
uv_tcp_getpeername(&client->handle.tcp, &client->addr, &namelen);
reset_timer(remote); // start timer
connect_to_remote(remote);
} else {
logger_log(LOG_ERR, "accept error: %s", uv_strerror(rc));
close_client(client);
close_remote(remote);
}
}
开发者ID:road0001,项目名称:xsocks,代码行数:26,代码来源:xsocks_client.c
示例15: client_handler
void client_handler(client_t* client) {
int ret;
assert(client->fired_event != NULL);
// Two stages
// First, read HTTP request, interested in readable event
if (client->stage == CS_READ_REQUEST) {
if (client->fired_event->filter == EVFILT_READ) {
ret = parse_http_request(client);
if (ret) goto close;
ret = generate_http_response(client);
if (ret) goto close;
client->stage = CS_WRITE_RESPONSE;
}
}
// Then, write HTTP response, interested in writable event
else if (client->stage == CS_WRITE_RESPONSE) {
if (client->fired_event->filter == EVFILT_WRITE) {
ret = write_http_response(client,
client->fired_event->data);
// When it went wrong or just finished correctly,
// close the client
if (ret) goto close;
}
}
// Clear the event since it has been handled
client->fired_event = NULL;
return;
close:
close_client(client);
}
开发者ID:tatetian,项目名称:nweb,代码行数:35,代码来源:nweb_kqueue.c
示例16: client_send_cb
static void
client_send_cb(uv_write_t *req, int status) {
struct client_context *client = req->data;
struct remote_context *remote = client->remote;
if (status == 0) {
if (client->stage == XSTAGE_REQUEST) {
receive_from_client(client);
} else if (client->stage == XSTAGE_FORWARD) {
receive_from_remote(remote);
} else if (client->stage == XSTAGE_TERMINATE) {
close_client(client);
close_remote(remote);
}
} else {
char addrbuf[INET6_ADDRSTRLEN + 1] = {0};
int port = ip_name(&client->addr, addrbuf, sizeof addrbuf);
if (client->stage == XSTAGE_FORWARD) {
logger_log(LOG_ERR, "%s:%d <- %s failed: %s", addrbuf, port, client->target_addr, uv_strerror(status));
} else {
logger_log(LOG_ERR, "forward to %s:%d failed: %s", addrbuf, port, uv_strerror(status));
}
}
free(req);
}
开发者ID:road0001,项目名称:xsocks,代码行数:29,代码来源:xsocks_client.c
示例17: close_bev
static void close_bev(struct bufferevent *bev, struct conn_desc *conn)
{
if (IS_SERVER(bev, conn))
close_server(conn);
else
close_client(conn);
}
开发者ID:Nothing4You,项目名称:nntp-proxy,代码行数:7,代码来源:nntp-proxy.c
示例18: eventLoop
void eventLoop( HANDLE hIocp )
{
DWORD bytesTransferred = 0;
SP_TestClient * client = NULL;
SP_TestEvent * event = NULL;
BOOL isSuccess = GetQueuedCompletionStatus( hIocp, &bytesTransferred,
(DWORD*)&client, (OVERLAPPED**)&event, 100 );
DWORD lastError = WSAGetLastError();
if( ! isSuccess ) {
if( NULL != client ) {
gStat.mGQCSFail++;
close_client( client );
}
return;
}
if( SP_TestEvent::eEventRecv == event->mType ) {
on_read( client, event );
return;
}
if( SP_TestEvent::eEventSend == event->mType ) {
on_write( client, event );
return;
}
}
开发者ID:CCoder123,项目名称:pproj,代码行数:28,代码来源:testiocpstress.cpp
示例19: main
int main(int argc, char * argv[]) {
init_client();
start_transaction();
close_client();
fprintf(stderr, "closed.....\n");
return 0;
}
开发者ID:sheimi,项目名称:ipc-homework,代码行数:7,代码来源:client.c
示例20: on_buf_write
/**
* Set to a zero watermark, so gets called when all data for this
* socket is written out. In this case, we're done.
*/
static void on_buf_write(struct bufferevent *bev, void *arg) {
/* we finished our write. We done. */
client_t *client = (client_t *)arg;
DEBUG("Finished write on fd %d", client->fd);
close_client(client);
}
开发者ID:breu,项目名称:evgopherd,代码行数:11,代码来源:main.c
注:本文中的close_client函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论