当前位置: 首页>>代码示例>>C++>>正文


C++ socket_write函数代码示例

本文整理汇总了C++中socket_write函数的典型用法代码示例。如果您正苦于以下问题:C++ socket_write函数的具体用法?C++ socket_write怎么用?C++ socket_write使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了socket_write函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: register_vehicle

void register_vehicle(int fd, struct vehicle_list *vehicles)
{
    int16_t port;
    char *addr;
    uint32_t data_size, id;

    if(socket_read(fd, &port, sizeof(int16_t)) != sizeof(int16_t))
        return;
    port = ntohs(port);
    if(socket_read(fd, &data_size, sizeof(uint32_t)) != sizeof(uint32_t))
        return;
    data_size = ntohl(data_size);

    addr = (char*)malloc(data_size + 1);
    if(addr == NULL)
        error_exit("Memory allocation:");

    if(socket_read(fd, addr, data_size) != data_size)
    {
        free(addr);
        return;
    }
    addr[data_size] = 0;

    id = htonl(l_add_vehicle(vehicles, port, addr));
    socket_write(fd, "k", 1);
    socket_write(fd, &id, sizeof(uint32_t));
    
    printf("Vehicle %d registered. Count = %d\n", ntohl(id), vehicles->num_vehicles);
    free(addr);
}
开发者ID:jablonskim,项目名称:Cjk,代码行数:31,代码来源:server.c

示例2: socket_main

int socket_main(int hsocket)
{
        struct sockaddr_in sock;
        int asocket;            /* Active socket */
        socklen_t sock_len;
        char buffer[200];
        int got;

        sock_len = sizeof(struct sockaddr_in);
        asocket = accept( hsocket, (struct sockaddr *)&sock, &sock_len );
        if (asocket == -1) {
                return -1;
        }
        socket_write( asocket, "Hi there\n", 9 );
        while (1) {
                while (socket_poll(asocket)==0) {}
                if ((got=socket_read(asocket, buffer, 200))>0) {
                        socket_write( asocket, buffer, got );
                }
                else
                        break;
        }
        close(asocket);
        return 0;
}
开发者ID:JackieXie168,项目名称:sdcc,代码行数:25,代码来源:csock.c

示例3: get_history

void get_history(int fd, struct vehicle_list *vehicles)
{
    int32_t id, count, x, y;
    struct single_vehicle *v;
    struct position *p;

    if(socket_read(fd, &id, sizeof(uint32_t)) != sizeof(uint32_t)) return;
    id = ntohl(id);

    count = begin_getting_history(vehicles, id, &v);
    count = htonl(count);
    
    if(socket_write(fd, &count, sizeof(uint32_t)) == sizeof(uint32_t) && v != NULL)
    {
        p = get_positions(v);
        
        while(p != NULL)
        {
            x = htonl(p->x);
            y = htonl(p->y);

            if(socket_write(fd, &x, sizeof(int32_t)) != sizeof(int32_t)) break;
            if(socket_write(fd, &y, sizeof(int32_t)) != sizeof(int32_t)) break;
              
            p = get_next_position(p);
        }
    }

    end_getting_history(vehicles, v);
}
开发者ID:jablonskim,项目名称:Cjk,代码行数:30,代码来源:server.c

示例4: send_continuation

/*
 * Sends a response to a command continuation request.
 */
int
send_continuation(session *ssn, const char *data, size_t len)
{

	if (ssn->socket == -1)
		return -1;

	if (socket_write(ssn, data, len) == -1 ||
	    socket_write(ssn, "\r\n", strlen("\r\n")) == -1)
		return -1;

	if (opts.debug) {
		unsigned int i;

		debug("sending continuation data (%d):\n\n", ssn->socket);
		
		for (i = 0; i < len; i++)
			debugc(data[i]);
		
		debug("\r\n\n");
			
	}

	return 0;
}
开发者ID:Papafox,项目名称:imapfilter,代码行数:28,代码来源:request.c

示例5: http_put_buf

/**
 * HTTP PUT buffer contents to a remote URL
 * @param url URL to PUT the contents to
 * @param buf Buffer whose contents to send
 * @param count Size of buffer (number of bytes to send)
 * @return HTTP status code, 200 for OK. See the HTTP RFC for details.
 */
int http_put_buf(const char *url, const void *buf, size_t count) {
	char *host = url_get_field(url, URL_HOST);
	char *port = url_get_field(url, URL_PORT);
	char *path = url_get_field(url, URL_PATH);

	int response_code = -1;

	if (host && port && path) {
		String *buffer = string_new("");

		string_append_c(buffer, "PUT ");
		string_append_c(buffer, path);
		string_append_c(buffer, " HTTP/1.1\r\n");

		string_append_c(buffer, "Host: ");
		string_append_c(buffer, host);
		string_append_c(buffer, "\r\n");

		string_append_c(buffer, "Content-type: text/plain\r\n");

		if (count > 0) {
			char length_str[16];
			snprintf(length_str, sizeof length_str, "%zu", count);
			string_append_c(buffer, "Content-length: ");
			string_append_c(buffer, length_str);
			string_append_c(buffer, "\r\n");
		}

		string_append_c(buffer, "Connection: close\r\n");
		string_append_c(buffer, "Iam: anilakar\r\n");

		string_append_c(buffer, "\r\n");

		int http_socket = socket_tcp_connect(host, port);
		if (http_socket >= 0) {
			if (-1 == socket_write(http_socket, buffer->c_str, buffer->size) ||
				-1 == socket_write(http_socket, buf, count)) {
				VERBOSE("Could not write to HTTP server.");
			} else {
				char response[512]; // Need only the first line
				int r = socket_read(http_socket, response, sizeof response - 1);
				response[r] = '\0';
				sscanf(response, "HTTP/1.1 %d", &response_code);				
			}
		}
		socket_close(&http_socket);
		string_delete(buffer);

	}
	else {
		VERBOSE("Malformed URL: %s", url);
	}

	free(path);
	free(port);
	free(host);

	VERBOSE("HTTP Response: %d", response_code);
	return response_code;
}
开发者ID:andyn,项目名称:httpdns,代码行数:67,代码来源:http.c

示例6: main

// main
//-----------------------------------------------------------------------------------
int
main (int argc, char *argv[])
{
  int s, size;
  pthread_t thread;
  char buf[256];

  if (argc == 1)
    {
      printf ("usage: client <server IP address>\n");
      exit (1);
    }

  s = socket_connect (argv[1], 1024);

  pthread_mutex_init (&g_mutex, NULL);
  pthread_create (&thread, NULL, thread_recv, (void *) &s);

  // メインループ
  //---------------------------------------------------
  while (g_main_loop)
    {
      fgets (buf, 256, stdin);
      size = strlen (buf);
      fprintf (stderr, "sending[%d] %s", size, buf);
      socket_write (s, &size, sizeof (int));
      socket_write (s, buf, size);
    }

  pthread_join (thread, NULL);

  exit (0);
}
开发者ID:letrungkien211,项目名称:SoftwareIII,代码行数:35,代码来源:client.c

示例7: write_string

static void write_string(int fd, char const * message)
{
    size_t const length = (message) ? strlen(message) : 0;
    socket_write(fd, (void const *)&length, sizeof(size_t));
    if (length > 0)
    {
        socket_write(fd, (void const *)message, length);
    }
}
开发者ID:Ruiyun,项目名称:Bear,代码行数:9,代码来源:protocol.c

示例8: NPServerSendROMInfoToClient

static bool8 NPServerSendROMInfoToClient (int c)
{
	if (!npplayer[c].online)
		return (false);

	NPNotification("Server: Sending ROM information to client %d...", c);

	if (NPServerSendMesToClient(c, kNPServerROMInfoWillSend) == false)
	{
		NPError("Server: Failed to send messsage to client.", 1301);
		return (false);
	}

	if (NPServerGetMesFromClient(c) != kNPClientROMInfoWaiting)
	{
		NPError("Server: Failed to receive messsage from client.", 1302);
		return (false);
	}

	uint8	mes[16];
	uint32	l;
	char	drive[_MAX_DRIVE + 1], dir[_MAX_DIR + 1], fname[_MAX_FNAME + 1], ext[_MAX_EXT + 1];

	_splitpath(Memory.ROMFilename, drive, dir, fname, ext);
	l = strlen(fname);

	WRITE_LONG(mes + 0,  Memory.ROMCRC32);
	WRITE_LONG(mes + 4,  deviceSetting);
	WRITE_BYTE(mes + 8,  0);	// reserved
	WRITE_BYTE(mes + 9,  0);	// reserved
	WRITE_BYTE(mes + 10, 0);	// reserved
	WRITE_BYTE(mes + 11, 0);	// reserved
	WRITE_LONG(mes + 12, l);

	if (socket_write(npplayer[c].socket, mes, 16) != 16)
	{
		NPError("Server: Failed to send ROM information to client.", 1303);
		return (false);
	}

	if (socket_write(npplayer[c].socket, (uint8 *) fname, l) != (int) l)
	{
		NPError("Server: Failed to send ROM name to client.", 1304);
		return (false);
	}

	NPNotification("Server: Sent ROM information to client %d.", c);
	return (true);

	// next: kNPClientROMOpened
}
开发者ID:OV2,项目名称:snes9x-libsnes,代码行数:51,代码来源:mac-server.cpp

示例9: NPClientReplyPhaseSpanTest

static bool8 NPClientReplyPhaseSpanTest (void)
{
	uint8   mes[21];
	int		l = npclient.numplayers * 4 + 1;

	NPNotification("Client: Replying sending / receiving pad states test...", -1);

	for (int n = 0; n < 5; n++)
	{
		if (socket_read(npclient.socket, mes, l) != l)
			return (false);

		if (socket_write(npclient.socket, mes, 5) != 5)
			return (false);
	}

	NPNotification("Client: Replied sending / receiving pad states test.", -1);

	NPNotification("Client: Receiving phase span value from server...", -1);

	if (socket_read(npclient.socket, mes, 4) != 4)
		return (false);

	npclient.phasespan = READ_LONG(mes + 0);

	NPNotification("  phase span: %d (frames)", npclient.phasespan);

	NPNotification("Client: Received phase span value from server.", -1);

	return (true);
}
开发者ID:RedGuyyyy,项目名称:snes9x,代码行数:31,代码来源:mac-client.cpp

示例10: handle_sys

/* Handle a RST 38 (system call) */
int handle_sys(int scall, int parameter) 
{
        char buffer[2];
        switch (scall) {
                case 0: {
                        /* Read in from telnet */
                        if (flags&DSOCKETS) {
                                return socket_get(tsocket);
                        }
                        return 0;
                        break;
                }
                case 1: {
                        /* Write to telnet */
                        if (flags&DSOCKETS) {
                                buffer[0]=(parameter&0x0ff);
                                return socket_write( tsocket, buffer, 1);
                        }
                        return -1;
                }
                case 2: {
                        /* Return !0 if data is available */
                        if (flags&DSOCKETS) {
                                return socket_poll( tsocket );
                        }
                        return -1;
                }
        }
        return 0;
}
开发者ID:davidgiven,项目名称:sdcc,代码行数:31,代码来源:main.c

示例11: run_networking_test

static void run_networking_test(bool server)
{
    if (!server) {
        connection_t *conn = connection_create(&on_connect);
        if (!conn)
            return;

        printf("connecting to localhost on port 1337\n");
        socket_connect(conn, "127.0.0.1", "1337");

        char buffer[1024];
        while (fgets(buffer, sizeof buffer, stdin))
            socket_write(conn, buffer);
    } else {
        socket_t *sock = socket_create(on_accept);
        if (!sock)
            return;

        printf("Server will bind to port 1337.\n");
        socket_listen(sock, NULL, 1337, 10);
        while (1) {
            sleep(5);
            printf("%d connections ATM\n", sock->num_connections);
        }
    }
}
开发者ID:tachometer,项目名称:csnippets,代码行数:26,代码来源:tests.c

示例12: on_connect

static void on_connect(connection_t *s)
{
    s->on_read = on_read;
    s->on_disconnect = on_disconnect;

    socket_write(s, "hi %s\n", s->ip);
}
开发者ID:tachometer,项目名称:csnippets,代码行数:7,代码来源:tests.c

示例13: send_svr_disconnect

void send_svr_disconnect(int sock, char *user_name)
  {
  /*
   * Disconnect message to svr:
   * +2+22+592+{user_len}{user}
   */
  int rc = PBSE_NONE;
  int len = 0, user_len = 0, user_ll = 0, resp_msg_len = 0;
  char tmp_buf[8];
  char *resp_msg = NULL;
  user_len = strlen(user_name);
  sprintf(tmp_buf, "%d", user_len);
  user_ll = strlen(tmp_buf);
  len += 8;
  len += user_ll;
  len += 1;
  len += user_len;
  len += LOGIN_NAME_MAX + 1;
  resp_msg = (char *)calloc(1, len);
  sprintf(resp_msg, "+2+22+59%d+%d%s", user_ll, user_len, user_name);
  resp_msg_len = strlen(resp_msg);
  if ((rc = socket_write(sock, resp_msg, resp_msg_len)) != resp_msg_len)
    {
    if (debug_mode == TRUE)
      fprintf(stderr, "Can not send close message to pbs_server!! (socket #%d)\n", sock);
    }
  free(resp_msg);
  }
开发者ID:adaptivecomputing,项目名称:torque-old,代码行数:28,代码来源:trq_auth.c

示例14: socket_write_all

int
socket_write_all(int sock, const void *buff, size_t len)
{
	size_t nleft;
	ssize_t nwritten;
	const char *ptr;

	ptr = buff;
	nleft = len;

	while (nleft > 0)
	{
		if ( (nwritten = socket_write(sock, ptr, nleft)) <= 0)
		{
			if (nwritten < 0 && errno == EINTR)
				nwritten = 0;   /* and call write() again */
			else
				return (-1);    /* error */
		}

		nleft -= nwritten;
		ptr += nwritten;
	}

	return len;
}
开发者ID:agustingianni,项目名称:StreamingProject,代码行数:26,代码来源:socket.c

示例15: send_response

/**
 * Send the response to the client. If the response has already been
 * commited, this function does nothing.
 */
static void send_response(HttpResponse res) {
  Socket_T S= res->S;

  if(!res->is_committed) {
    char date[STRLEN];
    char server[STRLEN];
    char *headers= get_headers(res);
    int length = StringBuffer_length(res->outputbuffer);

    res->is_committed= TRUE;
    get_date(date, STRLEN);
    get_server(server, STRLEN);
    socket_print(S, "%s %d %s\r\n", res->protocol, res->status,
		 res->status_msg);
    socket_print(S, "Date: %s\r\n", date);
    socket_print(S, "Server: %s\r\n", server);
    socket_print(S, "Content-Length: %d\r\n", length);
    socket_print(S, "Connection: close\r\n");
    if(headers)
	socket_print(S, "%s", headers);
    socket_print(S, "\r\n");
    if(length)
	socket_write(S, (unsigned char *)StringBuffer_toString(res->outputbuffer), length);
    FREE(headers);
  }
}
开发者ID:lixmgl,项目名称:Intern_OpenStack_Swift,代码行数:30,代码来源:processor.c


注:本文中的socket_write函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。