Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Lập trình socket trong C trên Linux ?

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    83

    Question Lập trình socket trong C trên Linux ?

    Mình đọc các tài liệu về lập trình socket trong C trên Linux & test thì thấy có 2 cách để viết 1 ctrình client kết nối TCP đến server

    Cách 1 :

    C Code:
    1. #include<stdio.h>
    2. #include<sys/socket.h>
    3. #include<arpa/inet.h>
    4. #include<sys/types.h>
    5. #include<stdlib.h>
    6. #include<string.h>
    7. #include<unistd.h>
    8.  
    9. #ifndef HAVE_BZERO
    10. #define bzero(ptr,n)        memset (ptr, 0, n)
    11. #endif
    12.  
    13.  
    14. int main(int argc, char **argv)
    15. {
    16. int sockfd, n;
    17. struct sockaddr_in servaddr;
    18.  
    19. if ((sockfd = socket(AF_INET, SOCK_STREAM,0))<0)
    20. {
    21. printf("ko the mo socket\n");
    22. exit(1);
    23. }
    24.  
    25. bzero(&servaddr,sizeof(servaddr));
    26.  
    27. servaddr.sin_family=AF_INET;
    28. servaddr.sin_port=htons(24000);
    29.  
    30. if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
    31. {
    32. printf("ko the inet_pton\n");
    33. exit(1);
    34. }
    35.  
    36. if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
    37. {
    38. printf("ko the connect den server\n");
    39. exit(1);
    40. }
    41. else
    42. printf("Connect thanh cong\n");
    43.  
    44.  
    45. close(sockfd);
    46.  
    47. return 0;
    48. }


    Cách 2 : Cách này thì có thêm 1 chức năng nhỏ là phân giải dns trước khi connect dùng hàm getaddrinfo

    C Code:
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <netdb.h>
    4.  
    5. struct addrinfo hints, *res;
    6. int sockfd;
    7.  
    8.  
    9. int main()
    10. {
    11.    memset(&hints, 0, sizeof hints);
    12.    hints.ai_family = AF_UNSPEC;
    13.    hints.ai_socktype = SOCK_STREAM;
    14.  
    15.    getaddrinfo("semtex.labs.pulltheplug.org", "24000", &hints, &res);
    16.  
    17.    sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
    18.  
    19.    connect(sockfd, res->ai_addr, res->ai_addrlen);
    20.  
    21.    return 0;
    22. }

    Cả 2 cách đều ok, cách 2 thì ngắn hơn cách 1

    Vậy mình thắc mắc là tại sao cùng là connect TCP socket mà lại có 2 cách lận ? chúng có gì khác nhau (ngoài cú pháp) ? cái nào tốt hơn ? vì salo ?

    Ai bít xin chỉ giúp
    Thanx

  2. #2
    Ngày gia nhập
    02 2009
    Bài viết
    34

    bạn xem thư viện nó dùng có giống nhau không?
    #include<sys/socket.h>
    #include<arpa/inet.h>
    #include<sys/types.h>
    chắc là khác
    #include <netdb.h>

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Cả 2 cách giống nhau đều là raw sock.

    Cách 2 chẳng qua là đơn giản hóa sử dụng chỉ để lấy thông tin địa chỉ.
    Cách 1 là phương pháp cơ bản.
    None!

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    11

    Cho em hỏi, Không thể lập trình socket bằng C trong Windows đc ạ
    Lúc em build thì nó hiện ra thiếu các thư viện

    C Code:
    1. #include<sys/socket.h>
    2. #include<arpa/inet.h>
    3. #include <netdb.h>

  5. #5
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi lamhaianh Xem bài viết
    Cho em hỏi, Không thể lập trình socket bằng C trong Windows đc ạ
    Lúc em build thì nó hiện ra thiếu các thư viện
    Cái ở trên là cho Linux.
    Còn Windows thì khác hoàn toàn, sử dụng bộ thư viện WinSock
    None!

  6. #6
    Ngày gia nhập
    10 2014
    Bài viết
    1

    Mặc định Lập trình socket trong C trên Linux ?

    Bạn nào có tài liệu về lập trình socket bằng C cho mình xin với!

Các đề tài tương tự

  1. Lập trình C Dùng socket để lập trình 1 chương trình chat như thế nào trên Linux ?
    Gửi bởi thanhtuan.nda trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 18-05-2013, 10:38 PM
  2. Bài tập C++ Cách tạo hàm trong lập trình socket C trên Linux?
    Gửi bởi cayxanh20005 trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 21-01-2013, 08:44 PM
  3. Tài liệu lập trình socket trong Linux
    Gửi bởi cupid1102 trong diễn đàn Công cụ, Tài liệu lập trình trên Linux
    Trả lời: 1
    Bài viết cuối: 26-03-2011, 04:37 PM
  4. Lập trình Linux connectsock() function trong lập trình socket
    Gửi bởi blackant trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 1
    Bài viết cuối: 20-08-2010, 07:35 PM
  5. Làm việc với kí tự và chuỗi trong lập trình C trên Linux [Linux Programming]
    Gửi bởi Xcross87 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 4
    Bài viết cuối: 02-10-2007, 11:33 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn