dụng hơn, cung cấp tùy chọn không nhiều bằng dịch vụ trực tuyến. ISP cho
hạn với cước phí cao hơn. Họ còn cấp cho khách một tài khoản E-mail. Ở Việt
Nam hiện có ba dịch vụ ISP đang hoạt động: VNN, FPT, và NetNam.
- Truy nhập trực tuyến(direct access) khả dụng ở nhiều học viện giáo dục hoặc công ty lớn. Thay vì sử dụng Modem, những tổ chức này thuê bao một đường truyền chuyên dụng để cung cấp truy nhập Internet 24/24 giờ.
Chương IIi: Một số hàm socket
I. Khái niệm về socket:
Trong mô hình mạng để hai máy tính có thể trao đổi thông tin cho nhau thì cần phải tạo ra kết nối giữa chúng. Trong quá trình làm việc người ta nhận thấy rằng những nhà lập trình ứng dụng rất khó khăn trong việc thiết lập kết nối và truyền tải dữ liệu giữa các máy tính với nhau. Vì thế người ta xây dựng khái niệm socket, khái niệm này được đưa ra đầu những năm 80 bởi các nhà khoa học máy tính ở California tại Berkeley. Khái niệm này được đưa ra từ ý tưởng phân tầng, trong đó Windows sockets Application Programming Interface(Winsock API) là thư viện các hàm do hãng Berkeley Software Distribution of UNIX đưa ra. Nhằm làm đơn giản hóa quá trình thiết lập kết nối và chuyển dữ liệu. socket dựa trên giao thức TCP/IP tạo môi trường trung gian cho các ứng dụng và giao thức bên dưới.
Socket được xem là một cấu trúc dữ liệu trừu tượng(asbtraction data structure) dùng tạo ra một kênh truyền(channel) để gởi và nhận dữ liệu giữa các process trong cùng chương trình hay các giữa các máy trong cùng môi trường mạng với nhau. Hay nói một cách đơn giản hơn chúng ta xem socket như là “cơ chế ổ cắm”. Khi kết nối giữa client và Server tương tự như việc cắm phích điện vào ổ cắm điện. client thường được xem như là phích cắm điện, còn server được xem như là ổ cắm điện, một ổ cắm có thể cắm vào đó nhiều phích điện khác nhau
Server socket
Client socket
cũng như một server có thể phục vụ cho nhiều client khác nhau.
Trong quá trình truyền, nhận dữ liệu cần có một máy đóng vai trò là server và một máy đóng vai trò client, đầu tiên server phải tạo ra một socket và chờ đợi các yêu cầu kết nối từ client. client tạo ra socket cho riêng nó xác định vị trí server (dựa vào tên của server hay địa chỉ của server trong mạng) và tiến hành việc kết nối với server, sau khi kết nối được thiết lập client và server có thể tiến hành việc trao đổi dữ liệu với nhau.
Tóm lại Socket là đầu (endpoint) trao đổi dữ liệu giữa các quá trình, qua đó các ứng dụng WinSock gởi / nhận dữ liệu qua mạng.
Có hai loại Socket : Stream Socket :
Dựa trên nghi thức TCP ( Tranmission Control Protocol ), việc truyền dữ liệu chỉ thực hiện giữa hai quá trình đã thiết lập kết nối. Dữ liệu được truyền tin cậy, đúng trình tự và không lập lại.
Dữ liệu được truyền như dòng liên tục các byte không phân biệt ranh giới các record
Datagram Socket :
Dựa trên nghi thức UDP ( User Datagram Protocol ), việc truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa hai quá trình. Dữ liệu truyền không tin cậy, có thể không đúng trình tự hoặc lập lại.
Dữ liệu được truyền như dòng các record. II.Lập trình Winsock:
WinSock API (Windows Sockets Application Programming Interface) là thư viện các hàm giao diện lập trình mạng cho Microsoft Windows. WinSock tương thích với họ nghi thức mạng TCP/IP.
a.Khái niệm Port :Port xác định duy nhất một quá trình trên một máy trong mạng.
Một TCP/IP Socket gồm một địa chỉ IP kết hợp với một port ? xác định duy nhất một quá trình trên mạng. Một số port dành riêng : UDP Ports : 0 Reversed 7 Echo 37 Time 42 Name Server
53 Domain Name Server
69 Trivial File Transfer Program ( TFTP ) 514 System Log
. . . TCP Ports :
0 Reversed 1 TCP Multiplexor 20 FTP_ Data Connection 21 FTP_ Command Connection 23 TELNET 25 SMTP 42 Name Server
53 Domain Name Server 79 Finger_ find a active user . . .
Các file cần thiết :
WINSOCK.DLL hay WSOCK32.DLL ( tuỳ version 16 hay 32 bit của Windows ). WINSOCK.LIB hay WSOCK32.LIB.
WINSOCK.H.
Giới thiệu một số hàm của WinSock:
Dưới đây chỉ giới thiệu chức năng của một số hàm WinSock, không trình bày prototype của các hàm
Các hàm khởi động WinSock :
Dùng để khởi đầu và kết thúc quá trình sử dụng WinSock. WSAStartup() : Khởi động WinSock.
WSACleanup() : Kết htúc WinSock.
WSAGetLastError() : Lấy mã sai vừa xảy ra. Các hàm Socket :
Dùng để thiết lập quá trình trao đổi dữ liệu trên mạng. socket() : tạo socket truyền dữ liệu.
bind() : định danh cho socket vừa tạo (gán port cho socket). listen() : lắng nghe kết nối.
accept() : chấp nhận kết nối từ client. connect() : kết nối với server.
send(), recv() : gởi, nhận dữ liệu với stream socket.
sendto(), recvfrom() : gởi, nhận dữ liệu với datagram socket. . . .
Các hàm khác :
inet_addr() : chuyển từ địa chỉ IP dạng số thập phân có chấm sang địa chỉ internet. inet_ntoa() : ngược lại.
gethostname() : cho tên máy hiện hành.
gethostbyname(),WSAAsyncGetHostByName() : cho địa chỉ IP ứng với tên máy.
: cho tên máy ứng với địa chỉ IP. . . .
WinSock error: Lỗi khi send data
WSANOTINITIALISED A successful AfxSocketInit must occur before using
this API.
WSAENETDOWN The Windows Sockets implementation detected that the
networ
k subsystem failed.
WSAEACCES The requested address is a broadcast address, but the appropriate flag was not set.
WSAEINPROGRESS A blocking Windows Sockets operation is in progress.
WSAEFAULT The lpBuf or lpSockAddr parameters are not part of the user address space, or the lpSockAddr argument is too small (less than the size of a
SOCKADDR structure).
WSAENETRESET The connection must be reset because the Windows Sockets
implementation dropped it.
WSAENOBUFS The Windows Sockets implementation reports a buffer deadlock.
WSAENOTCONN The socket is not connected (SOCK_STREAM only).
WSAENOTSOCK The descriptor is not a socket.
WSAEOPNOTSUPPMSG_OOB was specified, but the socket is not of type
SOCK_STREAM.
WSAESHUTDOWN The socket has been shut down; it is not possible to call
SendTo on a socket after ShutDown has been invoked with nHow set to 1 or 2.
WSAEWOULDBLOCK The socket is marked as nonblocking and the requested
operation would block.
WSAEMSGSIZE The socket is of type SOCK_DGRAM, and the datagram is
larger than the maximum supported by the Windows Sockets implementation.
WSAECONNABORTED The virtual circuit was aborted due to timeout or other
failure.
WSAECONNRESET The virtual circuit was reset by the remote side.
WSAEADDRNOTAVAIL The specified address is not available from the local
machine.
WSAEAFNOSUPPORT Addresses in the specified family cannot be used with
this socket.
WSAEDESTADDRREQ A destination address is required.
WSAENETUNREACH The network cannot be reached from this host at this
time.
WSANOTINITIALISED A successful AfxSocketInit must occur before using this API.
WSAENETDOWN The Windows Sockets implementation detected that the
network subsystem failed.
WSAENOTCONN The socket is not connected.
WSAEINPROGRESS A blocking Windows Sockets operation is in progress.
WSAENOTSOCK The descriptor is not a socket.
WSAEOPNOTSUPPMSG_OOB was specified, but the socket is not of type
SOCK_STREAM.
WSAESHUTDOWN The socket has been shut down; it is not possible to call
Receive on a socket after ShutDown has been invoked with nHow set to 0 or 2.
WSAEWOULDBLOCK The socket is marked as nonblocking and the Receive
operation would block.
WSAEMSGSIZE The datagram was too large to fit into the specified buffer and was truncated.
WSAEINVAL The socket has not been bound with Bind.
WSAECONNABORTED The virtual circuit was aborted due to timeout or other
failure.
WSAECONNRESET The virtual circuit was reset by the remote side.
Mô hình minh hoạ hoạt động của 2 dạng Socket
PHầN IV
GIỚI THIệu chương trình minh họa báo cháy
Chương trình bao gồm 2 thành phần: Một chạy ở các máy chủ gọi tắt là server program, một chạy ở các máy trạm gọi là client program.
Giao diện chạy ở server bao gồm các thành phần I.Chat
1.Host name (Tên máy chủ)
2.Serverlimit ( Số máy con tối đa có thể kết nối măc định là 16)
3.Host button ( Sau khi xác lập các thông số trên bấm vào host button máy này sẽ trở thành máy chủ).
II.Phần này bao gồm các phím điều khiển các máy con như : Gọi chữa cháy (Call 115),Tắt Màn Hình(Power Off), Phun nước (Water), Tắt máy (Shutdown).
I.Chat
1.Đánh vào địa chỉ IP hoặc tên máy chủ. 2.Đánh vào tên máy con.
3.Sau đó click connect. Máy tính sẽ bắt đầu giám sát quá trình xảy ra cháy nổ của hệ thống.
II. Monitor : Bao gồm các thành phần giám sát như trạng thái COM, Hệ thống shutdown.
Tài Liệu Tham Khảo.