Здравствуйте, -SS-, Вы писали:
SS>вообщем создаю сокет
SS>WSADATA WsaData;
SS>SOCKET s;
SS>SOCKET s1;
SS>CSocket sa;
SS>SOCKADDR_IN sin;
SS>BOOL CMyDialog::OnInitDialog()
SS>{
SS> CDialog::OnInitDialog();
SS> int err = WSAStartup (0x0101, &WsaData);
SS> if (err == SOCKET_ERROR)
SS> {
SS> AfxMessageBox("error socket");
SS> return 1;
SS> }
SS> s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SS> sin.sin_family = AF_INET;
SS> sin.sin_port = htons(8423);
SS> sin.sin_addr.s_addr = INADDR_ANY;
SS> err = bind( s, (LPSOCKADDR)&sin, sizeof(sin) );
SS> err = listen( s, SOMAXCONN);
SS>}
SS>Делаю кнопку на диалоге
SS>void CMyDialog::OnBUTTON7()
SS>{
SS> sa.Create();
SS> if (sa.Connect("192.168.10.1",8423))
SS> {
SS> AfxMessageBox("Ok connect ");
SS> }
SS> else
SS> AfxMessageBox("Error Connect");
SS> CString buffer = " Hello World";
SS> sa.Send(buffer, 500, 0);
SS> sa.Close();
SS>}
SS>Когда нажимаю на кнопку, то как и надо появляется сообщение OK connect,
SS>а вот как принять сообщение от sa.Send? Т.е. моя прога как бы себе посылает сообщение,
SS>знаю что нужно использовать accept и recieve, но вот не знаю как это использовать
.
SS>Необходима что бы она себе передала Hello World и вывела AfxMessageBox Hello World.
SS>Помогите пожалуйста.
Может, использование потоков поможет?
К примеру:
WSADATA WsaData;
SOCKET s;
SOCKET s1;
CSocket sa;
SOCKADDR_IN sin;
char receiveBuffer[300];
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
int err = WSAStartup (0x0101, &WsaData);
if (err == SOCKET_ERROR)
{
AfxMessageBox("error socket");
return 1;
}
s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
sin.sin_family = AF_INET;
sin.sin_port = htons(8423);
sin.sin_addr.s_addr = INADDR_ANY;
err = bind( s, (LPSOCKADDR)&sin, sizeof(sin) );
err = listen( s, SOMAXCONN);
AfxBeginThread(receiveThread,&s);
}
void CMyDialog::OnBUTTON7()
{
sa.Create();
if (sa.Connect("192.168.10.1",8423))
{
AfxMessageBox("Ok connect ");
}
else
AfxMessageBox("Error Connect");
CString buffer = " Hello World";
sa.Send(buffer, 500, 0);
sa.Close();
}
UINT receiveThread(LPVOID lParam){
SOCKET& sock = (SOCKET*)lParam;
SOCKET socket;
sockaddr_in sockAddr;
int lenSockAddr=sizeof(sockAddr);
if(socket=accept(&sock,(LPSOCKADDR)&sockAddr,&lenSockAddr))!=INVALID_SOCKET)
{
recv(socket,receiveBuffer,sizeof(receiveBuffer),0);
AfxMessageBox(...);
}
}