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
Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này
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