超小型迴圈式伺服器 原生socket程式設計

2021-06-19 16:45:15 字數 1502 閱讀 3659

閒來無聊,寫了乙個體積很小的tcp迴圈式伺服器,方便各系統移植。特共享如下,編譯後體積約為8kb,經過7*24小時壓力測試,5個以內連線都ok。

結合我之前的tcp**程式,可以做成乙個網絡卡埠資訊掃瞄日誌服務。

#include

#include

#include

#include

#define serv_port 49999

#define max_buf_one 65535

#define min_ip_size 16

#define message_file "m.txt"

int makecurtimestr(char* szcurtimestr)

int main(int argc, char* argv)

so_serv = socket(af_inet,sock_stream,ipproto_tcp);

memset(&serv_addr,0,sizeof(struct sockaddr_in));

serv_addr.sin_family = af_inet;

serv_addr.sin_addr.s_addr = htonl(inaddr_any);

nservport = (argc > 1) ? atoi(argv[1]) : serv_port;// 是否自行指定埠,若不指定用預設的49999

serv_addr.sin_port = htons(nservport);

iret = bind(so_serv,(sockaddr*)&serv_addr,sizeof(struct sockaddr_in));

if(socket_error == iret)

iret = listen(so_serv,somaxconn);

if(socket_error  == iret)

printf("receive server start! port:%d\n",nservport);

for(;;)

printf("\n");

// 獲取當前時間

memset(sztimestr,0,40);

makecurtimestr(sztimestr);

// 記錄傳輸內容

pf = fopen(message_file,"a+");

fprintf(pf,"\n%s\n",sztimestr);

fprintf(pf,"from:%s : %d, receive:%d bytes\n",szip,client_addr.sin_port,ret);

fwrite(szbuf,1,ret,pf);

fprintf(pf,"\n");

fclose(pf);

pf = null;

if(szip != null)

if(szbuf != null)

}closesocket(so_client);

}wsacleanup();

return 0;

}

小型伺服器

在cmd或者shell中啟動python自帶的http伺服器 python m httpserver 80 指定80埠正常啟動會看到如下輸出 serving http on 0.0.0.0 port 8000 說明http伺服器啟動成功,預設埠是8000 在瀏覽器輸入,http 可以省略 或者 ht...

搭建小型郵件伺服器

公司用的exchange郵件伺服器,最近公升級內外網郵件分離。在使用outlook鏈結exchange server的時候,只能收到公司內部之間的郵件。而jira的伺服器配置的傳送郵箱的伺服器是外網的。於是申請了公司內部郵箱賬號來傳送jira郵件,無奈公司的exchange server要求使用nt...

ios小型伺服器環境配置

之前買的一台二手iphone4退役了,上閒魚上一看,就值200,而且耳機聲音也有點輕,估計買不了什麼錢 於是網上看看能不能有什麼廢物利用的法子,看到說做行車記錄儀的,有說做git伺服器的,感覺挺有興趣 就查了下 首先是ios的作業系統,dark root uname a darwin dark 13...