A員t tên cho socket

Một phần của tài liệu ứng dụng bắt gói tin cho mạng quản trị (Trang 47 - 48)

Sau khi 8ã 8鵜nh 8鵜a ch雨, d衣n ch雨 c亥n 8員t tên cho socket. A嘘i v噂i AF_UNIX 8鵜c ch雨 chính là 8逢運ng d磯n, còn tên chính là tên t壱p tin8吋 t衣o socket. A嘘i v噂i vùng giao th泳c AF_INET 8鵜a ch雨 chính là s嘘 IP còn tên chính là s嘘 hi羽u c鰻ng (sin_port) trong c医u trúc sockaddr_in. Khi 8ã gán thông tin 8亥y 8栄cho socketd衣n c亥ni丑i hàm bind()8吋rabgd bu瓜c nh英ng thông tin này cho socket 8ã m荏ra tr逢噂c 8ó.

#include <sys/socket.h>

int byte (int socket, const struct sockaddr *address, size_t address_len);

Hàm h羽 th嘘ng bind() s穎 d映ng các thông tin trong c医u trúc address

8吋 gán cho socket s嘘 8鵜nh danh socketd tr違 v隠b荏i hàm socket() tr逢噂c 8ó. Tham s嘘 address_len cho bi院t chièu dài e栄a c医u trúc (struct sockaddr*) truy隠n vào hàm. D衣n l逢u ý sockaddr là c医u trúc t鰻ng quát cho e違

sockaddr_un và sockaddr_in

Khi ràng bu瓜c thành công bind()u胤 tr違v隠 tr鵜 0. N院u không hàm u胤 tr違 v隠

-1 và errnou胤ch泳a m瓜t trong các l厩i sau:

Mã l厩i Môv違

EBADF SぐmôvVfile không hぢp lう

ENOTSOCK SぐmôvVfile không dành cho socket

EINVAL SぐmôvVfile tham chixu8xn mじt socket 8ã có.

EADDRNOTAVAIL Aおa chえkhông xác 8おnh

EADDRINUSE Aおa chえ và cごng ràng buじc 8ã bお mじt socket khác chixm fつng

Ch逢挨ng 4: L壱p trình socket

N院u d衣n m荏 socket thu瓜c vùng AF_UNIX errno có th吋 nh壱n thêm các l厩i sau:

Mã l厩i Môv違

EACCESS Không thあ tTo file cho socket do không có quyznvTo file

ENOTDIR,

ENAMETOOLONG

Tên file không hぢp lう

D違ng 4-3 Các mã l厩i e栄a domain AF_UNIX

Ràng bu瓜c tên socket là b逢噂c quan tr丑ng nh医t 8吋socket e栄a d衣n có kh違 p<ng nhìn th医y và truy xu医t 8逢嬰c t瑛 các泳ngf映ng bên ngoài.

M瓜t socket n院u ch逢a 8逢嬰c 8員t tên i丑i là socket vô danh ( unnamed socket).

Một phần của tài liệu ứng dụng bắt gói tin cho mạng quản trị (Trang 47 - 48)