環境:linux c
功能:併發伺服器實現cs通訊
/*server.c*/
#include
#include
#include
#include
#include
#include //檔案io read write close fork waitpid
#include //socket() struct sockaddr_in htonl htons
#include //socket()
#include //inetaddr() inet_pton()
#include //signal
#define serv_port 5001
#define serv_ip_addr "192.168.152.128"
//子程序退出的訊息處理函式
void sig_child_handler(int signo)
}int main()
//2繫結socket
填充struct sockaddr_in
struct sockaddr_in sin;
bzero(&sin,sizeof(sin));
sin.sin_family = af_inet;
sin.sin_port = htons(serv_port);//網路位元組序的埠號
#if 1
sin.sin_addr.s_addr = htonl(inaddr_any);//代替某個ip inet_addr(serv_ip_addr) 讓伺服器能繫結在任意ip
#else
if(inet_pton(af_inet,serv_ip_addr,(void *)&sin.sin_addr.s_addr) != 1)
#endif
開始繫結socket就是給fd帶上屬性
if(bind(fd,(const struct sockaddr *)&sin,sizeof(sin)) < 0)
//3 呼叫listen()將主動套接字變成被動套接字
if(listen(fd,5) == -1)
//4 多程序併發處理客戶端連線請求
while(1)
pid_t pid;
if((pid = fork()) < 0)
if(pid == 0)
printf("client(%s:%d) is connected\n",ipv4_addr,ntohs(cin.sin_port));
//5通過newfd進行cs通訊
char buf[bufsiz];
bzero(buf,bufsiz);
int ret;
while(1)
printf("%s",buf);
}if(ret == 0 )
else
}exit(0);
}close(newfd);
signal(sigchld,sig_child_handler);
}_exit:
//6關閉套接子
close(fd);
return 0;
}/*client.c*/
#include
#include
#include
#include
#include
#include //檔案io read write close
#include //socket() struct sockaddr_in htonl htons
#include //socket()
#include //inetaddr() inet_pton()
#define serv_port 5001
#define serv_ip_addr "192.168.152.128"
int main()
//2 connect()申請連線
//填充sockaddr_in()結構體
struct sockaddr_in sin;
bzero(&sin,sizeof(sin));
sin.sin_family = af_inet;
sin.sin_port = htons(serv_port);//網路位元組序的埠號
#if 0
sin.sin_addr.s_addr = inet_addr(serv_ip_addr);
#else
if(inet_pton(af_inet,serv_ip_addr,(void *)&sin.sin_addr.s_addr) != 1)
#endif
//申請連線
if((connect(fd,(const struct sockaddr *)&sin,sizeof(sin))) < 0)
//char buf[bufsiz];
while(1)
write(fd,buf,bufsiz);
if(!strncasecmp(buf,"quit\n",4))
}//關閉套接字
close(fd);
return 0;
}
TCP多程序併發伺服器 c
其他關聯文章 丶4ut15m tcp網路程式設計 c udp網路程式設計 c 多執行緒併發伺服器 c io復用 c 多程序併發伺服器整個流程和單程序差別不太大,主要區別在互動部分.伺服器 建立套接字 繫結位址結構 監聽套接字 等待並接受連線請求 主程序建立子程序後執行上一步,子程序與客戶端進行互動 ...
Linux 併發伺服器程式設計(多程序)
在linux中通過流式套接字程式設計 tcp 實現乙個併發伺服器的訪問回顯,適合剛學完linux套接字程式設計的朋友進行鞏固訓練 具體功能 include include include include include include include include include include ...
Linux 併發伺服器程式設計(多程序)
在linux中通過流式套接字程式設計 tcp 實現乙個併發伺服器的訪問回顯,適合剛學完linux套接字程式設計的朋友進行鞏固訓練 具體功能 include include include include include include include include include include ...