Documente Academic
Documente Profesional
Documente Cultură
Între ele are loc un dialog, în care ambele programe sînt echivalente. Regulele
organizării dialogului sînt stabilite de un protocol. Între Server şi Client se crează
un canal de comunicare. Citirea şi scrierea se face cu ajutorul unor obiecte –
Socket.
Server
Socket
Client
Bind
Listen Socket
Stabilirea legăturii
Accept Conect
Transmiterea cerinţii
Receive() Send()
Transmiterea rezultatelor
Send() Receive()
Fig.1 Schema principială după care sînt construite aplicaţiile de reţea cu ajutorul Window Socket
Programul Client
1. Crearea socket-ului.
2. Se uneşte socket-ul cu un port local(bind).
3. Se stabileşte socket-ul în regim de ascultare(listen).
4. Trece în regim de aşteptare a cererii(accept).
5. Citeşte cererea.
6. Scrie răspunsul.
7. Trece iarăşi în regim de aşteptare.
if (m_sMySocket.Create())
{
// Continuă stabilirea legăturii
}
else
// Nu sa putut crea clasa. Trebuie de prelucrat eroarea existentă
if (m_sMySocket.Create(4000))
{
// Continuă mai departe
}
else
// Nu sa putut crea clasa. Trebuie de prelucrat eroarea existentă
răspundă şi adresa la care ar trebui să răspundă (în cazul cînd calculatorul are mai
multe cartele de reţea.
if (m_sMySocket.Connect("numelecalc.com", 4000))
{
// Continuă mai departe
}
else
// Se prelucrează erarea comisă
if (m_sMySocket.Listen())
{
// Continuă mai departe
}
else
// Se prelucrează eroarea apărută.
if (m_sMySocket.Accept(m_sMySecondSocket))
{
// Continuă mai departe
}
www.cartiaz.ro – Carti si articole online gratuite de la A la Z
else
// Se prelucrează eroarea apărută
CString strMyMessage;
int iLen;
int iAmtSent;
.
.
.
iLen = strMyMessage.GetLength();
iAmtSent = m_sMySocket.Send(LPCTSTR(strMyMessage), iLen);
www.cartiaz.ro – Carti si articole online gratuite de la A la Z
if (iAmtSent == SOCKET_ERROR)
{
// Se prelucrează eroarea apărută
}
else
{
// Totul este în ordine
}
pBuf[iRcvd] = NULL;
strRecvd = pBuf;
// Se prelucrează mesajul mai departe.
}
m_sMySocket.Close();