mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
use big-endian for client package
This commit is contained in:
6
client.c
6
client.c
@@ -38,7 +38,7 @@ _read(void *ud) {
|
||||
uint8_t header[2];
|
||||
fflush(stdout);
|
||||
readall(fd, header, 2);
|
||||
size_t len = header[0] | header[1] << 8;
|
||||
size_t len = header[0] << 8 | header[1];
|
||||
if (len>0) {
|
||||
char tmp[len+1];
|
||||
readall(fd, tmp, len);
|
||||
@@ -56,8 +56,8 @@ test(int fd) {
|
||||
fgets(tmp,sizeof(tmp),stdin);
|
||||
int n = strlen(tmp) -1;
|
||||
uint8_t head[2];
|
||||
head[0] = n & 0xff;
|
||||
head[1] = (n >> 8) & 0xff;
|
||||
head[0] = (n >> 8) & 0xff;
|
||||
head[1] = n & 0xff;
|
||||
int r;
|
||||
r = send(fd, head, 2, 0);
|
||||
if (r<0) {
|
||||
|
||||
@@ -183,7 +183,7 @@ _cb(struct skynet_context * ctx, void * ud, int session, const char * uid, const
|
||||
getpeername(fd, (struct sockaddr *)&remote_addr, &len);
|
||||
_report(ctx, "%d open %d %s:%u",id,fd,inet_ntoa(remote_addr.sin_addr),ntohs(remote_addr.sin_port));
|
||||
}
|
||||
uint16_t * plen = mread_pull(m,2);
|
||||
uint8_t * plen = mread_pull(m,2);
|
||||
if (plen == NULL) {
|
||||
if (mread_closed(m)) {
|
||||
_remove_id(g,id);
|
||||
@@ -191,7 +191,9 @@ _cb(struct skynet_context * ctx, void * ud, int session, const char * uid, const
|
||||
}
|
||||
goto _break;
|
||||
}
|
||||
void * data = mread_pull(m, *plen);
|
||||
// big-endian
|
||||
uint16_t len = plen[0] << 8 | plen[1];
|
||||
void * data = mread_pull(m, len);
|
||||
if (data == NULL) {
|
||||
if (mread_closed(m)) {
|
||||
_remove_id(g,id);
|
||||
@@ -200,7 +202,7 @@ _cb(struct skynet_context * ctx, void * ud, int session, const char * uid, const
|
||||
goto _break;
|
||||
}
|
||||
|
||||
_forward(ctx, g, id, data, *plen);
|
||||
_forward(ctx, g, id, data, len);
|
||||
mread_yield(m);
|
||||
_break:
|
||||
skynet_command(ctx, "TIMEOUT", "0");
|
||||
|
||||
@@ -15,7 +15,8 @@ _cb(struct skynet_context * context, void * ud, int session, const char * addr,
|
||||
int fd = (int)(intptr_t)ud;
|
||||
|
||||
struct iovec buffer[2];
|
||||
uint8_t head[2] = { sz & 0xff , sz >> 8 & 0xff };
|
||||
// send big-endian header
|
||||
uint8_t head[2] = { sz >> 8 & 0xff , sz & 0xff };
|
||||
buffer[0].iov_base = head;
|
||||
buffer[0].iov_len = 2;
|
||||
buffer[1].iov_base = (void *)msg;
|
||||
|
||||
Reference in New Issue
Block a user