Tắt đi thì chương trình của bạn sẽ được giải phóng, cổng bạn đã mở cũng sẽ được giải phóng... Để hiểu rõ điều này bạn tìm hiểu các tài liệu về stdin, stdout, tty, ... và tài liệu về Linux Kernel
Đoạn code dưới có tác dụng mở một port 5588
trong của sổ Shell Mình gõ
> cd \chatlan
> server
> ss -l (Thấy đã mở thành công port 5588)
> client connect tới port 5588 thành công
Nhưng khi mình tắt cái bảng Shell đi (Cổng 5588 biến đâu mắt tam)
Cái mình muốn hỏi các bạn là: Code ở dưới, có thiếu cái gì không mà cứ tắt bảng Shell đi là port close liền?
C Code:
#include<stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> int main() { int sockfd, newsockfd, portno, clilen; char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n; //----------------------------- //------------------------------ //Step 1: Create Socket sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("Loi mo Socket"); //------------------------------ //Step 2: Bind to port serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(5588); if (bind(sockfd, (struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) error("ERROR on binding"); //----------------------------- //Step 3: Listen listen(sockfd,5); //----------------------------- //Step 4: Waiting for connection request clilen = sizeof(cli_addr); newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error("Loi Chap Nhan"); //---------------------------- //Step 5: Begin sending/receiving data n = recv(newsockfd,buffer,255,0); if (n < 0) error("Loi doc tu Socket"); buffer[n]='\0'; //End string if (n < 0) error("Loi ghi tu socket"); //------------------------------ //Step 6: Close socket close(sockfd); close(newsockfd); return 0; }
Tắt đi thì chương trình của bạn sẽ được giải phóng, cổng bạn đã mở cũng sẽ được giải phóng... Để hiểu rõ điều này bạn tìm hiểu các tài liệu về stdin, stdout, tty, ... và tài liệu về Linux Kernel
Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó.Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
Phone: 0972 89 7667
Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.
Tắt bảng shell để làm gì ? Trong khi trong code của bạn có phần xuất ra thiết bị chuẩn ?
Nếu muốn làm như các dịch vụ mạng khác, tắt shell đi vẫn còn hoạt động thì phải làm cho tiến trình lắng nghe port đó trở thành một daemon.