Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
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ẬPTRÌNHSOCKET 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ẬPTRÌNHSOCKET 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ẬPTRÌNHSOCKET 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ẬPTRÌNHSOCKETTRÊN UNIX Thơng tin về cc hàm dùng cho lập trìnhsocket 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ẬPTRÌNHSOCKET VỚI UDP SERVER CLIENT socket( )... H c Bách Khoa Tp.HCM LẬP TRÌNHSOCKETTRÊN UNIX Thơng tin về cc hàm dùng cho lập trìnhsocket 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ÌNHSOCKETTRÊN UNIX Thơng tin về cc hàm dùng cho lập trìnhsocket 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ẬPTRÌNHSOCKET 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ẬPTRÌNHSOCKET 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ẬPTRÌNHSOCKET 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ẬPTRÌNHSOCKET 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