Thông tin tài liệu:
Bài giảng Lập trình mạng: Chương 3 - Lập trình mạng dùng socket trên sử dụng C sau đây sẽ trang bị cho các bạn những kiến thức về lập trình socket trên unix, lập trình socket với UDP, lập trình socket với TCP. Với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình mạng: Chương 3 - Phạm Trần Vũ
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH MẠNG DÙNG SOCKET
TRÊN SỬ DỤNG C
Bài Giảng 3
Khoa Học và Kỹ Thuật Máy Tính Trang 1
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Quản lý socket
– Unix: Integer
Primitives Meaning
SOCKET Create a new communication end point
BIND Attach a local address to a socket
LISTEN Announce willingness to accept connections; give queue size
ACCEPT Block the caller until connection attempt arrives
CONNECT Actively attempt to establish a connection
SEND Send some data over the connection
RECEIVE Receive some data from the connection
CLOSE Release the connection
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 2
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 3
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 4
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 5
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 6
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 7
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET TRÊN UNIX
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 8
Tröôøng Ñaïi Hoïc Baù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 socket(int domain, int type, int protocol);
Trong đó:
– domain (af): họ địa chỉ, thường sử dụng là AF_INET: Internet address
– type : Kiểu socket (SOCK_STREAM, SOCK_DGRAM)
– protocol : giao thức được dùng, default = 0
int bind(int sockfd, struct sockaddr *my_addr, int addrlen);
Trong đó:
– sockfd: là socket file descriptor trả về từ hàm socket
– my_addr : a pointer to a struct sockaddr (chứa: address, port and IP address
...)
– addrlen = sizeof(struct sockaddr).
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 9
Tröôøng Ñaïi Hoïc Baù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 connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
Trong đó:
- sockfd là socket file descriptor.
- serv_addr là struct sockaddr chứa port & IP address đích
- addrlen = sizeof(struct sockaddr).
int listen(int sockfd, int backlog);
Trong đó:
- sockfd là socket file descriptor.
- backlog là số kết nối cho phép của hàng đợi. Các yêu cầu connect của
đối tác sẽ được lưu trong queue cho tới khi được accept
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 10
Tröôøng Ñaïi Hoïc Baù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, void *buf, int len, unsigned int flags);
int 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 Ñaïi Hoïc Baù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 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 Ñaïi Hoïc Baù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 Ñaïi Hoïc Baùch Khoa Tp.HCM
LẬP TRÌNH SOCKET VỚI UDP
CLIENT SERVER
socket() socket()
bind()
data
sendto() receivefrom() client address
receivefrom() data sendto()
close() close()
Khoa Khoa Học và Kỹ Thuật Máy Tính Trang 14
...