本文整理汇总了C++中r_socket_write函数的典型用法代码示例。如果您正苦于以下问题:C++ r_socket_write函数的具体用法?C++ r_socket_write怎么用?C++ r_socket_write使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了r_socket_write函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: r_core_rtr_cmds
R_API int r_core_rtr_cmds (RCore *core, const char *port) {
unsigned char buf[4097];
RSocket *ch, *s;
int i, ret;
char *str;
if (!port || port[0]=='?') {
r_cons_printf ("Usage: .:[tcp-port] run r2 commands for clients\n");
return R_FALSE;
}
s = r_socket_new (0);
if (!r_socket_listen (s, port, NULL)) {
eprintf ("Error listening on port %s\n", port);
r_socket_free (s);
return R_FALSE;
}
eprintf ("Listening for commands on port %s\n", port);
listenport = port;
for (;;) {
r_cons_break ((RConsBreak)http_break, core);
ch = r_socket_accept (s);
buf[0] = 0;
ret = r_socket_read (ch, buf, sizeof (buf) - 1);
if (ret>0) {
buf[ret] = 0;
for (i=0; buf[i]; i++)
if (buf[i] == '\n')
buf[i] = buf[i+1]? ';': '\0';
if (!r_config_get_i (core->config, "scr.prompt") \
&& !strcmp ((char*)buf, "q!"))
break;
str = r_core_cmd_str (core, (const char *)buf);
if (str &&*str) {
r_socket_write (ch, str, strlen (str));
} else
r_socket_write (ch, "\n", 1);
free (str);
}
if (r_cons_singleton()->breaked)
break;
r_socket_close (ch);
r_cons_break_end ();
}
r_socket_free(s);
r_socket_free(ch);
return 0;
}
开发者ID:dialeth,项目名称:radare2,代码行数:49,代码来源:rtr.c
示例2: haret__read
static int haret__read(RIO *io, RIODesc *fd, ut8 *buf, int count) {
char tmp[1024];
int i = 0;
ut64 off;
st64 j;
RSocket *s = HARET_FD (fd);
off = io->off & -4;
sprintf (tmp, "pdump 0x%"PFMT64x" %i\r\n", off, count+4);
r_socket_write (s, tmp, strlen (tmp));
r_socket_read_block (s, (unsigned char *) tmp, strlen (tmp)+1);
j = (io->off - off)*2;
while (i<count && j >= 0) {
r_socket_read_block (s, (ut8*) tmp, 11);
r_socket_read_block (s, (ut8*) tmp, 35);
if (i+16 < count || (io->off-off) == 0) {
tmp[35] = 0;
i += r_hex_str2bin (tmp+j, buf+i);
r_socket_read_block (s, (unsigned char *) tmp, 21);
} else {
tmp[(io->off - off)*2] = 0;
i += r_hex_str2bin (tmp+j, buf+i);
}
j = 0;
}
haret_wait_until_prompt (s);
return i;
}
开发者ID:Chelwin,项目名称:radare2-extras,代码行数:28,代码来源:io_haret.c
示例3: rap__read
static int rap__read(struct r_io_t *io, RIODesc *fd, ut8 *buf, int count) {
RSocket *s = RIORAP_FD (fd);
int ret;
int i = (int)count;
ut8 tmp[5];
if (count>RMT_MAX)
count = RMT_MAX;
// send
tmp[0] = RMT_READ;
r_mem_copyendian (tmp+1, (ut8*)&count, 4, ENDIAN);
r_socket_write (s, tmp, 5);
r_socket_flush (s);
// recv
ret = r_socket_read_block (s, tmp, 5);
if (ret != 5 || tmp[0] != (RMT_READ|RMT_REPLY)) {
eprintf ("rap__read: Unexpected rap read reply "
"(%d=0x%02x) expected (%d=0x%02x)\n",
ret, tmp[0], 2, (RMT_READ|RMT_REPLY));
return -1;
}
r_mem_copyendian ((ut8*)&i, tmp+1, 4, ENDIAN);
if (i>count) {
eprintf ("rap__read: Unexpected data size %d\n", i);
return -1;
}
r_socket_read_block (s, buf, i);
return count;
}
开发者ID:AitorATuin,项目名称:radare2,代码行数:29,代码来源:io_rap.c
示例4: r_core_rtr_pushout
R_API void r_core_rtr_pushout(RCore *core, const char *input) {
int fd = atoi (input);
const char *cmd = NULL;
char *str = NULL;
if (fd) {
for (rtr_n = 0; rtr_host[rtr_n].fd->fd != fd \
&& rtr_n < RTR_MAX_HOSTS; rtr_n++);
if (!(cmd = strchr (input, ' '))) {
eprintf ("Error\n");
return;
}
} else cmd = input;
if (!rtr_host[rtr_n].fd->fd) {
eprintf("Error: Unknown host\n");
return;
}
if (!(str = r_core_cmd_str (core, cmd))) {
eprintf ("Error: radare_cmd_str returned NULL\n");
return;
}
switch (rtr_host[rtr_n].proto) {
case RTR_PROT_RAP:
eprintf ("Error: Cannot use '=<' to a rap connection.\n");
break;
case RTR_PROT_TCP:
case RTR_PROT_UDP:
default:
r_socket_write (rtr_host[rtr_n].fd, str, strlen (str));
break;
}
free (str);
}
开发者ID:moon2l,项目名称:radare2,代码行数:35,代码来源:rtr.c
示例5: send_packet
int send_packet(libgdbr_t *g) {
if (!g) {
eprintf ("Initialize libgdbr_t first\n");
return -1;
}
return r_socket_write (g->sock, g->send_buff, g->send_len);
}
开发者ID:XVilka,项目名称:radare2,代码行数:7,代码来源:packet.c
示例6: rap__write
static int rap__write(RIO *io, RIODesc *fd, const ut8 *buf, int count) {
RSocket *s = RIORAP_FD (fd);
ut8 *tmp;
int ret;
if (count < 1) {
return count;
}
// TOOD: if count > RMT_MAX iterate !
if (count > RMT_MAX) {
count = RMT_MAX;
}
if (!(tmp = (ut8 *)malloc (count + 5))) {
eprintf ("rap__write: malloc failed\n");
return -1;
}
tmp[0] = RMT_WRITE;
r_write_be32 (tmp + 1, count);
memcpy (tmp + 5, buf, count);
ret = r_socket_write (s, tmp, count + 5);
r_socket_flush (s);
if (r_socket_read (s, tmp, 5) != 5) { // TODO read_block?
eprintf ("rap__write: error\n");
ret = -1;
} else {
ret = r_read_be32 (tmp + 1);
if (!ret) {
ret = -1;
}
}
free (tmp);
return ret;
}
开发者ID:EliaGeretto,项目名称:radare2,代码行数:34,代码来源:io_rap.c
示例7: r_socket_new
// TODO: support len for binary data?
R_API char *r_core_rtr_cmds_query (RCore *core, const char *host, const char *port, const char *cmd) {
int retries = 6;
unsigned char buf[1024];
char *rbuf = NULL;
const int timeout = 0;
RSocket *s = r_socket_new (0);
for (;retries>0; r_sys_usleep (10*1000)) {
if (r_socket_connect (s, host, port, R_SOCKET_PROTO_TCP, timeout))
break;
retries--;
}
if (retries>0) {
rbuf = strdup ("");
r_socket_write (s, (void*)cmd, strlen (cmd));
//r_socket_write (s, "px\n", 3);
for (;;) {
int ret = r_socket_read (s, buf, sizeof (buf));
if (ret<1) break;
buf[ret] = 0;
rbuf = r_str_concat (rbuf, (const char *)buf);
}
} else {
eprintf ("Cannot connect\n");
}
r_socket_free (s);
return rbuf;
}
开发者ID:dialeth,项目名称:radare2,代码行数:28,代码来源:rtr.c
示例8: rap__read
static int rap__read(RIO *io, RIODesc *fd, ut8 *buf, int count) {
RSocket *s = RIORAP_FD (fd);
int ret, i = (int)count;
ut8 tmp[5];
// XXX. if count is > RMT_MAX, just perform multiple queries
if (count > RMT_MAX) {
count = RMT_MAX;
}
// send
tmp[0] = RMT_READ;
r_write_be32 (tmp + 1, count);
r_socket_write (s, tmp, 5);
r_socket_flush (s);
// recv
ret = r_socket_read_block (s, tmp, 5);
if (ret != 5 || tmp[0] != (RMT_READ | RMT_REPLY)) {
eprintf ("rap__read: Unexpected rap read reply "
"(%d=0x%02x) expected (%d=0x%02x)\n",
ret, tmp[0], 2, (RMT_READ | RMT_REPLY));
return -1;
}
i = r_read_at_be32 (tmp, 1);
if (i >count) {
eprintf ("rap__read: Unexpected data size %d\n", i);
return -1;
}
r_socket_read_block (s, buf, i);
return count;
}
开发者ID:EliaGeretto,项目名称:radare2,代码行数:30,代码来源:io_rap.c
示例9: haret__system
static int haret__system(RIO *io, RIODesc *fd, const char *command) {
char buf;
int off = 0;
r_socket_write (HARET_FD (fd), (char *)command, strlen(command));
r_socket_write (HARET_FD (fd), "\r\n", 2);
for (;;) {
r_socket_read_block (HARET_FD (fd), (unsigned char *)&buf, 1);
eprintf ("%c", buf);
switch(off) {
case 0: if (buf == ')') off =1; break;
case 1: if (buf == '#') return 0; else off = 0; break;
}
}
return 0;
}
开发者ID:Chelwin,项目名称:radare2-extras,代码行数:17,代码来源:io_haret.c
示例10: r_core_rtr_cmd
R_API void r_core_rtr_cmd(RCore *core, const char *input) {
char bufw[1024], bufr[8];
const char *cmd = NULL, *cmd_output = NULL;
int i, cmd_len, fd = atoi (input);
if (*input==':' && !strchr (input+1, ':')) {
r_core_cmdf (core, "o rap://%s", input);
return;
}
if (fd != 0) {
if (rtr_host[rtr_n].fd)
for (rtr_n = 0; rtr_host[rtr_n].fd->fd != fd
&& rtr_n < RTR_MAX_HOSTS - 1; rtr_n++);
if (!(cmd = strchr (input, ' '))) {
eprintf ("Error\n");
return;
}
} else cmd = input;
if (!rtr_host[rtr_n].fd){
eprintf ("Error: Unknown host\n");
core->num->value = 1; // fail
return;
}
if (!rtr_host[rtr_n].proto == RTR_PROT_RAP){
eprintf ("Error: Not a rap:// host\n");
return;
}
core->num->value = 0; // that's fine
if (!strlen (cmd)) {
// just check if we can connect
r_socket_close (rtr_host[rtr_n].fd);
return;
}
/* send */
bufw[0] = RTR_RAP_CMD;
i = strlen (cmd) + 1;
r_mem_copyendian ((ut8*)bufw+1, (ut8*)&i, 4, endian);
memcpy (bufw+5, cmd, i);
r_socket_write (rtr_host[rtr_n].fd, bufw, 5+i);
/* read */
r_socket_read (rtr_host[rtr_n].fd, (ut8*)bufr, 5);
if (bufr[0] != (char)(RTR_RAP_CMD|RTR_RAP_REPLY)) {
eprintf ("Error: Wrong reply\n");
return;
}
r_mem_copyendian ((ut8*)&cmd_len, (ut8*)bufr+1, 4, endian);
cmd_output = malloc (cmd_len);
if (!cmd_output) {
eprintf ("Error: Allocating cmd output\n");
return;
}
r_socket_read (rtr_host[rtr_n].fd, (ut8*)cmd_output, cmd_len);
r_cons_printf ("%s\n", cmd_output);
free ((void *)cmd_output);
}
开发者ID:dialeth,项目名称:radare2,代码行数:58,代码来源:rtr.c
示例11: rap__system
static int rap__system(RIO *io, RIODesc *fd, const char *command) {
RSocket *s = RIORAP_FD (fd);
ut8 buf[RMT_MAX];
char *ptr;
int op, ret, i, j = 0;
// send
if (*command=='!') {
op = RMT_SYSTEM;
command++;
} else
op = RMT_CMD;
buf[0] = op;
i = strlen (command)+1;
if (i>RMT_MAX) {
eprintf ("Command too long\n");
return -1;
}
r_mem_copyendian (buf+1, (ut8*)&i, 4, ENDIAN);
memcpy (buf+5, command, i);
r_socket_write (s, buf, i+5);
r_socket_flush (s);
// read
ret = r_socket_read_block (s, buf, 5);
if (ret != 5)
return -1;
if (buf[0] != (op | RMT_REPLY)) {
eprintf ("Unexpected system reply\n");
return -1;
}
r_mem_copyendian ((ut8*)&i, buf+1, 4, ENDIAN);
if (i == -1)
return -1;
ret = 0;
ptr = (char *)malloc (i);
if (ptr) {
int ir, tr = 0;
do {
ir = r_socket_read_block (s, (ut8*)ptr+tr, i-tr);
if (ir>0) tr += ir;
else break;
} while (tr<i);
// TODO: use io->printf() with support for \x00
ptr[i] = 0;
if (io->printf) {
io->printf ("%s", ptr);
j = i;
} else j = write (1, ptr, i);
free (ptr);
}
/* Clean */
if (ret > 0) {
ret -= r_socket_read (s, (ut8*)buf, RMT_MAX);
}
return i-j;
}
开发者ID:jahrome,项目名称:radare2,代码行数:57,代码来源:io_rap.c
示例12: r_socket_printf
R_API void r_socket_printf(RSocket *s, const char *fmt, ...) {
char buf[BUFFER_SIZE];
va_list ap;
if (s->fd >= 0) {
va_start (ap, fmt);
vsnprintf (buf, BUFFER_SIZE, fmt, ap);
r_socket_write (s, buf, strlen(buf));
va_end (ap);
}
}
开发者ID:jevinskie,项目名称:radare2,代码行数:10,代码来源:socket.c
示例13: r_core_rtr_cmd
R_API void r_core_rtr_cmd(RCore *core, const char *input) {
char bufw[1024], bufr[8];
const char *cmd = NULL, *cmd_output = NULL;
int i, cmd_len, fd = atoi (input);
if (fd != 0) {
if (rtr_host[rtr_n].fd)
for (rtr_n = 0; rtr_host[rtr_n].fd->fd != fd
&& rtr_n < RTR_MAX_HOSTS; rtr_n++);
if (!(cmd = strchr (input, ' '))) {
eprintf ("Error\n");
return;
}
} else cmd = input;
if (!rtr_host[rtr_n].fd){
eprintf ("Error: Unknown host\n");
return;
}
if (!rtr_host[rtr_n].proto == RTR_PROT_RAP){
eprintf ("Error: Not a rap:// host\n");
return;
}
/* send */
bufw[0] = RTR_RAP_CMD;
i = strlen (cmd) + 1;
r_mem_copyendian ((ut8*)bufw+1, (ut8*)&i, 4, endian);
memcpy (bufw+5, cmd, i);
r_socket_write (rtr_host[rtr_n].fd, bufw, 5+i);
/* read */
r_socket_read (rtr_host[rtr_n].fd, (ut8*)bufr, 5);
if (bufr[0] != (char)(RTR_RAP_CMD|RTR_RAP_REPLY)) {
eprintf ("Error: Wrong reply\n");
return;
}
r_mem_copyendian ((ut8*)&cmd_len, (ut8*)bufr+1, 4, endian);
if (i == 0)
return;
if (i < 0) {
eprintf ("Error: cmd length < 0\n");
return;
}
cmd_output = malloc (cmd_len);
if (!cmd_output) {
eprintf ("Error: Allocating cmd output\n");
return;
}
r_socket_read (rtr_host[rtr_n].fd, (ut8*)cmd_output, cmd_len);
r_cons_printf ("%s\n", cmd_output);
free ((void *)cmd_output);
}
开发者ID:moon2l,项目名称:radare2,代码行数:53,代码来源:rtr.c
示例14: r_socket_proc_printf
R_API void r_socket_proc_printf (RSocketProc *sp, const char *fmt, ...) {
RSocket s;
char buf[BUFFER_SIZE];
va_list ap;
s.is_ssl = false;
s.fd = sp->fd0[1];
if (s.fd >= 0) {
va_start (ap, fmt);
vsnprintf (buf, BUFFER_SIZE, fmt, ap);
r_socket_write (&s, buf, strlen(buf));
va_end (ap);
}
}
开发者ID:AmesianX,项目名称:radare2,代码行数:13,代码来源:proc.c
示例15: rap__system
static int rap__system(RIO *io, RIODesc *fd, const char *command) {
RSocket *s = RIORAP_FD (fd);
ut8 buf[RMT_MAX];
char *ptr;
int op, ret, i, j = 0;
// send
if (*command=='!') {
op = RMT_SYSTEM;
command++;
} else
op = RMT_CMD;
buf[0] = op;
i = strlen (command);
if (i>RMT_MAX) {
eprintf ("Command too long\n");
return -1;
}
r_mem_copyendian (buf+1, (ut8*)&i, 4, ENDIAN);
memcpy (buf+5, command, i);
r_socket_write (s, buf, i+5);
r_socket_flush (s);
// read
ret = r_socket_read_block (s, buf, 5);
if (ret != 5)
return -1;
if (buf[0] != (op | RMT_REPLY)) {
eprintf ("Unexpected system reply\n");
return -1;
}
r_mem_copyendian ((ut8*)&i, buf+1, 4, ENDIAN);
if (i == -1)
return -1;
ret = 0;
if (i>RMT_MAX) {
ret = i-RMT_MAX;
i = RMT_MAX;
}
ptr = (char *)malloc (i);
if (ptr) {
r_socket_read_block (s, (ut8*)ptr, i);
j = write (1, ptr, i);
free (ptr);
}
/* Clean */
if (ret > 0) {
ret -= r_socket_read (s, (ut8*)buf, RMT_MAX);
}
return i-j;
}
开发者ID:0xroot,项目名称:radare2,代码行数:51,代码来源:io_rap.c
示例16: r_socket_http_response
R_API void r_socket_http_response (RSocketHTTPRequest *rs, int code, const char *out, int len, const char *headers) {
const char *strcode = \
code==200?"ok":
code==301?"moved permanently":
code==302?"Found":
code==404?"not found":
"UNKNOWN";
if (len<1) len = out? strlen (out): 0;
if (!headers) headers = "";
r_socket_printf (rs->s, "HTTP/1.0 %d %s\r\n%s"
"Connection: close\r\nContent-Length: %d\r\n\r\n",
code, strcode, headers, len);
if (out && len>0) r_socket_write (rs->s, (void*)out, len);
}
开发者ID:KarjamP,项目名称:radare2,代码行数:14,代码来源:http_server.c
示例17: strdup
R_API char *r_socket_http_post (const char *url, const char *data, int *code, int *rlen) {
RSocket *s;
int ssl = !memcmp (url, "https://", 8);
char *response, *host, *path, *port = "80";
char *uri = strdup (url);
if (!uri) return NULL;
host = strstr (uri, "://");
if (!host) {
free (uri);
printf ("Invalid URI");
return NULL;
}
host += 3;
port = strchr (host, ':');
if (!port)
port = (ssl)?"443":"80";
else
*port++ = 0;
path = strchr (host, '/');
if (!path)
path = "";
else
*path++ = 0;
s = r_socket_new (ssl);
if (!s) {
printf ("Cannot create socket\n");
free (uri);
return NULL;
}
if (!r_socket_connect_tcp (s, host, port, 0)) {
eprintf ("Cannot connect to %s:%s\n", host, port);
free (uri);
return NULL;
}
/* Send */
r_socket_printf (s,
"POST /%s HTTP/1.0\r\n"
"User-Agent: radare2 "R2_VERSION"\r\n"
"Accept: */*\r\n"
"Host: %s\r\n"
"Content-Length: %i\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"\r\n", path, host, strlen (data));
r_socket_write (s, (void *)data, strlen (data));
response = r_socket_http_answer (s, code, rlen);
free (uri);
return response;
}
开发者ID:AmesianX,项目名称:radare2,代码行数:49,代码来源:http.c
示例18: rap__lseek
static ut64 rap__lseek(struct r_io_t *io, RIODesc *fd, ut64 offset, int whence) {
RSocket *s = RIORAP_FD (fd);
int ret;
ut8 tmp[10];
// query
tmp[0] = RMT_SEEK;
tmp[1] = (ut8)whence;
r_mem_copyendian (tmp+2, (ut8*)&offset, 8, ENDIAN);
r_socket_write (s, &tmp, 10);
r_socket_flush (s);
// get reply
ret = r_socket_read_block (s, (ut8*)&tmp, 9);
if (ret!=9)
return -1;
if (tmp[0] != (RMT_SEEK | RMT_REPLY)) {
eprintf ("Unexpected lseek reply\n");
return -1;
}
r_mem_copyendian ((ut8 *)&offset, tmp+1, 8, !ENDIAN);
return offset;
}
开发者ID:AitorATuin,项目名称:radare2,代码行数:21,代码来源:io_rap.c
示例19: rap__lseek
static ut64 rap__lseek(RIO *io, RIODesc *fd, ut64 offset, int whence) {
RSocket *s = RIORAP_FD (fd);
ut8 tmp[10];
int ret;
// query
tmp[0] = RMT_SEEK;
tmp[1] = (ut8)whence;
r_write_be64 (tmp + 2, offset);
r_socket_write (s, &tmp, 10);
r_socket_flush (s);
// get reply
memset (tmp, 0, 9);
ret = r_socket_read_block (s, (ut8*)&tmp, 9);
if (ret != 9 || tmp[0] != (RMT_SEEK | RMT_REPLY)) {
// eprintf ("%d %d - %02x %02x %02x %02x %02x %02x %02x\n",
// ret, whence, tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5], tmp[6]);
eprintf ("Unexpected lseek reply\n");
return -1;
}
offset = r_read_at_be64 (tmp, 1);
return offset;
}
开发者ID:EliaGeretto,项目名称:radare2,代码行数:22,代码来源:io_rap.c
示例20: rap__write
static int rap__write(struct r_io_t *io, RIODesc *fd, const ut8 *buf, int count) {
RSocket *s = RIORAP_FD (fd);
int ret;
ut8 *tmp;
if (count>RMT_MAX)
count = RMT_MAX;
if (!(tmp = (ut8 *)malloc (count+5))) {
eprintf ("rap__write: malloc failed\n");
return -1;
}
tmp[0] = RMT_WRITE;
r_mem_copyendian ((ut8 *)tmp+1, (ut8*)&count, 4, ENDIAN);
memcpy (tmp+5, buf, count);
ret = r_socket_write (s, tmp, count+5);
r_socket_flush (s);
if (r_socket_read (s, tmp, 5) != 5) { // TODO read_block?
eprintf ("rap__write: error\n");
ret = -1;
}
free (tmp);
// TODO: get reply
return ret;
}
开发者ID:AitorATuin,项目名称:radare2,代码行数:24,代码来源:io_rap.c
注:本文中的r_socket_write函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论