You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
147
vendor/swoole/examples/server.c
vendored
Executable file
147
vendor/swoole/examples/server.c
vendored
Executable file
@ -0,0 +1,147 @@
|
||||
/**
|
||||
* gcc -o server server.c -lswoole
|
||||
*/
|
||||
#include <swoole/Server.h>
|
||||
#include <swoole/swoole.h>
|
||||
#include <swoole/Client.h>
|
||||
|
||||
int my_onReceive(swFactory *factory, swEventData *req);
|
||||
void my_onStart(swServer *serv);
|
||||
void my_onShutdown(swServer *serv);
|
||||
void my_onConnect(swServer *serv, int fd, int from_id);
|
||||
void my_onClose(swServer *serv, int fd, int from_id);
|
||||
void my_onTimer(swServer *serv, int interval);
|
||||
void my_onWorkerStart(swServer *serv, int worker_id);
|
||||
void my_onWorkerStop(swServer *serv, int worker_id);
|
||||
|
||||
char* php_rtrim(char *str, int len)
|
||||
{
|
||||
int i;
|
||||
for (i = len; i > 0; i--)
|
||||
{
|
||||
switch(str[i])
|
||||
{
|
||||
case ' ':
|
||||
case '\0':
|
||||
case '\n':
|
||||
case '\r':
|
||||
case '\t':
|
||||
case '\v':
|
||||
str[i] = 0;
|
||||
break;
|
||||
default:
|
||||
return str;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
||||
swServer serv;
|
||||
swServer_init(&serv); //初始化
|
||||
|
||||
//config
|
||||
serv.reactor_num = 2; //reactor线程数量
|
||||
serv.worker_num = 4; //worker进程数量
|
||||
|
||||
serv.factory_mode = SW_MODE_PROCESS; //SW_MODE_PROCESS SW_MODE_THREAD SW_MODE_BASE
|
||||
serv.max_connection = 100000;
|
||||
//serv.open_cpu_affinity = 1;
|
||||
//serv.open_tcp_nodelay = 1;
|
||||
//serv.daemonize = 1;
|
||||
//serv.open_eof_check = 1;
|
||||
|
||||
//create Server
|
||||
ret = swServer_create(&serv);
|
||||
if (ret < 0)
|
||||
{
|
||||
swTrace("create server fail[error=%d].\n", ret);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
//swServer_addListen(&serv, SW_SOCK_UDP, "127.0.0.1", 9500);
|
||||
swListenPort *port = swServer_add_port(&serv, SW_SOCK_TCP, "127.0.0.1", 9501);
|
||||
//swServer_addListen(&serv, SW_SOCK_UDP, "127.0.0.1", 9502);
|
||||
//swServer_addListen(&serv, SW_SOCK_UDP, "127.0.0.1", 8888);
|
||||
port->backlog = 128;
|
||||
|
||||
serv.onStart = my_onStart;
|
||||
serv.onShutdown = my_onShutdown;
|
||||
serv.onConnect = my_onConnect;
|
||||
serv.onReceive = my_onReceive;
|
||||
serv.onClose = my_onClose;
|
||||
serv.onWorkerStart = my_onWorkerStart;
|
||||
serv.onWorkerStop = my_onWorkerStop;
|
||||
|
||||
ret = swServer_start(&serv);
|
||||
if (ret < 0)
|
||||
{
|
||||
swTrace("start server fail[error=%d].\n", ret);
|
||||
exit(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void my_onWorkerStart(swServer *serv, int worker_id)
|
||||
{
|
||||
printf("Worker[%d]PID=%d start\n", worker_id, getpid());
|
||||
}
|
||||
|
||||
void my_onWorkerStop(swServer *serv, int worker_id)
|
||||
{
|
||||
printf("Worker[%d]PID=%d stop\n", worker_id, getpid());
|
||||
}
|
||||
|
||||
void my_onTimer(swServer *serv, int interval)
|
||||
{
|
||||
printf("Timer Interval=[%d]\n", interval);
|
||||
}
|
||||
|
||||
static int receive_count = 0;
|
||||
|
||||
int my_onReceive(swServer *serv, swEventData *req)
|
||||
{
|
||||
int ret;
|
||||
char resp_data[SW_BUFFER_SIZE];
|
||||
swSendData resp;
|
||||
receive_count ++;
|
||||
resp.info.fd = req->info.fd; //fd can be not source fd.
|
||||
resp.info.len = req->info.len + 8;
|
||||
resp.info.from_id = req->info.from_id;
|
||||
req->data[req->info.len] = 0;
|
||||
|
||||
snprintf(resp_data, resp.info.len, "Server:%s", req->data);
|
||||
resp.data = resp_data;
|
||||
ret = serv->send(serv, &resp);
|
||||
if (ret < 0)
|
||||
{
|
||||
printf("send to client fail.errno=%d\n", errno);
|
||||
}
|
||||
printf("onReceive[%d]: Data=%s|Len=%d\n",receive_count, php_rtrim(req->data, req->info.len), req->info.len);
|
||||
return SW_OK;
|
||||
}
|
||||
|
||||
void my_onStart(swServer *serv)
|
||||
{
|
||||
printf("Server is running\n");
|
||||
}
|
||||
|
||||
void my_onShutdown(swServer *serv)
|
||||
{
|
||||
printf("Server is shutdown\n");
|
||||
}
|
||||
|
||||
void my_onConnect(swServer *serv, int fd, int from_id)
|
||||
{
|
||||
printf("PID=%d\tConnect fd=%d|from_id=%d\n", getpid(), fd, from_id);
|
||||
}
|
||||
|
||||
void my_onClose(swServer *serv, int fd, int from_id)
|
||||
{
|
||||
printf("PID=%d\tClose fd=%d|from_id=%d\n", getpid(), fd, from_id);
|
||||
}
|
Reference in New Issue
Block a user