1. Trang chủ
  2. » Công Nghệ Thông Tin

LẬP TRÌNH MẠNG DÙNG SOCKET TRÊN SỬ DỤNG C

24 272 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 279,49 KB

Nội dung

Khoa Hc v K Thut Mỏy Tớnh Trang 1 Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Bi Ging 3 LP TRèNH MNG DNG SOCKET TRấN S DNG C Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 2 LP TRèNH SOCKET TRấN UNIX Qu n lý socket Unix: Integer Release the connectionCLOSE Receive some data from the connectionRECEIVE Send some data over the connectionSEND Actively attempt to establish a connectionCONNECT Block the caller until connection attempt arrivesACCEPT Announce willingness to accept connections; give queue sizeLISTEN Attach a local address to a socketBIND Create a new communication end pointSOCKET MeaningPrimitives Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 3 LP TRèNH SOCKET TRấN UNIX Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 4 LP TRèNH SOCKET TRấN UNIX Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 5 LP TRèNH SOCKET TRấN UNIX Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 6 LP TRèNH SOCKET TRấN UNIX Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 7 LP TRèNH SOCKET TRấN UNIX Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 8 LP TRèNH SOCKET TRấN UNIX Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 9 LP TRèNH SOCKET TRấN UNIX Thụng tin v cỏc hm dựng cho lp trỡnh socket int socket(int domain, int type, int protocol); Trong ú: domain (af): h a ch, thng s dng l AF_INET: Internet address type : Kiu socket (SOCK_STREAM, SOCK_DGRAM) protocol : giao thc c dựng, default = 0 int bind(int sockfd, struct sockaddr *my_addr, int addrlen); Trong ú: sockfd: l socket file descriptor tr v t hm socket my_addr : a pointer to a struct sockaddr (cha: address, port and IP address ) addrlen = sizeof(struct sockaddr). Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 10 LP TRèNH SOCKET TRấN UNIX Thụng tin v cỏc hm dựng cho l p trỡnh socket int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); Trong ú: - sockfd l socket file descriptor. - serv_addr l struct sockaddr cha port & IP address ớch - addrlen = sizeof(struct sockaddr). int listen(int sockfd, int backlog); Trong ú: - sockfd l socket file descriptor. - backlog l s kt ni cho phộp ca hng i. Cỏc yờu cu connect ca i tỏc s c lu trong queue cho ti khi c accept [...]... Khoa H c và Kỹ Thuật Máy Tính Trang 15 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP SERVER CLIENT socket( ) socket( ) bind() listen() connection request connect() send()/receive() close() data accept() newsocket send()/receive() close(mainsocket) close(newsocket) Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 16 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP CLIENT SERVER socket( ) socket( )... bind() connect() connection request listen() accept() close(mainsocket ) newsocket send()/receive() close() data send()/receive() NEW PROCESS close(newsocket) Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 17 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Client #include #include int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct... sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen); fromlen khởi tạo bằng sizeof(struct sockaddr) Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 12 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thơng tin về c c hàm dùng cho lập trình socket Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 13 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI UDP SERVER CLIENT socket( )... H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thơng tin về c c hàm dùng cho lập trình socket int accept(int sockfd, void *addr, int *addrlen); Trong đó: - sockfd là socket file descriptor - addr là pointer trỏ tới sockaddr_in X c định ai kết nối tới, kết nối từ port nào - addrlen là biến int = sizeof(struct sockaddr_in) int send(int sockfd, const void *msg, int len, int flags); int recv(int sockfd,... read(int sockfd, const void *buf, int len); int write(int sockfd, const void *buf, int len); Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 11 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Thơng tin về c c hàm dùng cho lập trình socket int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen); tolen c giá trị bằng sizeof(struct sockaddr) int recvfrom(int... socket( ) socket( ) bind() sendto() receivefrom() close() data data receivefrom() client address sendto() close() Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 14 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI UDP socket( ) socket( ) bind() data sendto() receivefrom() close() client address socket( ) receivefrom() sento()/receivefrom( ) close() data NEW PROCESS sendto() sendto()/receivefrom( ) close() Khoa... printf(“%s”, recvline); } if (n < 0) { perror("read"); exit(5); } close ( sockfd ); } Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 20 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Server #include #include int main (int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr, cliaddr; char buff[MAXLINE]; time_t ticks; /* Create a TCP socket */ listenfd... to the socket */ bind (listenfd, (struct sockaddr*) &servaddr, sizeof( servaddr)); /* Convert socket to a listening socket */ listen (listenfd, 100); for ( ; ; ) { /* Wait for client connections and accept them */ clilen = sizeof(cliaddr); connfd = accept( listenfd, (struct sockaddr *)&cliaddr, &clilen); ticks = time(NULL); snprintf( buff, sizeof(buff),"%.24s\r\n",ctime(&ticks)); /* Write to socket */... perror("inet_pton"); exit(3); } /* Connect to the server */ if ( connect( sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0 ) { perror("connect"); exit(4); } Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 19 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Client (tiếp theo) /* Read the date/time from socket */ while ( (n = read ( sockfd, recvline, MAXLINE)) > 0) { recvline[n] = ‘\0’; /* null... char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if( argc != 2 ) printf("Usage : gettime "); exit(1); /* Create a TCP socket */ if ( (sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) { perror( "socket" ); exit(2); } Khoa Khoa H c và Kỹ Thuật Máy Tính Trang 18 Trường Đại H c Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Client (tiếp theo) /* Specify server’s IP address and port */ . sockfd, int backlog); Trong ú: - sockfd l socket file descriptor. - backlog l s kt ni cho phộp ca hng i. C c yờu cu connect ca i t c s c lu trong queue cho ti khi c accept Trửụứng ẹaùi Ho c. TCP socket( ) CLIENT SERVER socket( ) bind() send()/receive() close( newsocket ) close() listen() accept()connect() connection request data accept() close( mainsocket ) send()/receive() newsocket NEW PROCESS Trửụứng. TCP socket( ) CLIENT SERVER socket( ) bind() send()/receive() close( mainsocket ) close( newsocket ) close() listen() accept()connect() connection request data accept() newsocket send()/receive() Trửụứng ẹaùi Ho c Baựch Khoa Tp.HCM Khoa Khoa Hc v K Thut Mỏy Tớnh Trang 17 LP TRèNH SOCKET VI TCP socket( ) CLIENT

Ngày đăng: 08/05/2014, 16:55

TỪ KHÓA LIÊN QUAN

w