用c寫的,做了函式的封裝,記錄在此,方便查詢
server.h
#ifndef __server_h
#define __server_h
#define false -1
#define true 0
int server_init(char *server_port); //伺服器初始化
int wait_accept(int server_fd); //等待客戶機連線
void server_destory(int server_fd); //銷毀伺服器
#endif
server.c
#include "server.h"
#include #include #include #include #include #include #include #include #include #define size 128
#define bufsize 1024
int server_init(char *server_port)
int val = 1;
if (setsockopt(server_fd, sol_socket, so_reuseaddr, &val,
sizeof(val)) < 0) //設定套接字
server_raddr.sin_family = af_inet;
server_raddr.sin_port = htons(atoi(server_port));
inet_pton(af_inet, "0.0.0.0", &server_raddr.sin_addr);
if (bind(server_fd, (void *)&server_raddr, sizeof(server_raddr)) <
0) // listen第二引數為等待連線佇列的最大長度 不管設定的多少,都會被捨入系統裡面最接近的有效值
//目前測試,設定為1 能同時連上3個
if (listen(server_fd, 5) <
0) char ipstr[128];
if (inet_ntop(af_inet, &server_raddr.sin_addr, ipstr, sizeof(ipstr)) ==
null)
printf("[%d] server :%s %d\n", server_fd, ipstr,
ntohs(server_raddr.sin_port));
return server_fd;
}int wait_accept(int server_fd)
int new_client_fd = -1;
struct sockaddr_in new_client_raddr;
socklen_t new_client_raddr_len = sizeof(new_client_raddr);
new_client_fd =
accept(server_fd, (void *)&new_client_raddr, &new_client_raddr_len);
if (new_client_fd < 0)
char ipstr[128];
if (inet_ntop(af_inet, &new_client_raddr.sin_addr, ipstr, sizeof(ipstr)) ==
null)
printf("[%d] client:%s %d\n", new_client_fd, ipstr,
ntohs(new_client_raddr.sin_port));
return new_client_fd;
}void server_destory(int server_fd)
Linux下編寫執行C語言程式
1.gcc 1.c o 1.out 1.out命名 2.gcc lm 1.c a.out使用math.h中宣告的庫函式還有一點特殊之處,gcc命令列必須加 lm選項,因為數學函式位於libm.so庫檔案中 這些庫檔案通常位於 lib目錄下 lm選項告訴編譯器,我們程式中用到的數學函式要到這個庫檔案裡...
Linux下 使用C語言編寫who命令
在linux 下 who命令是查詢當前登入的每個使用者。who的預設輸出包括使用者名稱 終端型別 登入日期及遠端主機。如圖 我們man一下who,在聯機幫助裡可以看到,who命令是讀取 var run utmp檔案來得到以上資訊的。我們在man一下utmp,知道utmp這個檔案,是二進位制檔案,裡面...
C語言編寫 linux 下的 touch 命令
用c語言實現linux 下 touch 命令的操作 touch 建立檔案或者修改檔案或目錄的時間戳。實現效果 可新增三個引數 c no create do not create any files 不建立不存在的檔案 a change only the access time 只修改檔案的訪問時間 ...