Mình đang học lập trình mạng bằng winsock. Trong sách bảo hàm listen() là một vòng lặp , nó sẽ đợi khi có một sock connect tới nó . chả hiểu sao code của mình chưa có cái sock nào kết nối tới mà nó đã thoát vòng lặp rùi
Đoạn code của mình đây:
#include <WinSock2.h>
#include <iostream>
using namespace std;
void main()
{
WSADATA wsaData;
if (WSAStartup(0x101,&wsaData))
{
cout<<"Khong the tao duoc Socket";
system("pause");
return;
}
SOCKADDR_IN IEPServer;
SOCKADDR_IN IEPClient;
int lenClient;
char PCName[20];
gethostname(PCName,20);
HOSTENT *IpPC= gethostbyname(PCName);
char *IPaddr= inet_ntoa(*((in_addr**)IpPC->h_addr_list)[0]);
cout<<"Dia chi IP cua may ban la : "<<IPaddr<<endl;
IEPServer.sin_addr.s_addr=INADDR_ANY;
IEPServer.sin_family=AF_INET;
IEPServer.sin_port=htons(9999);
SOCKET server =socket(AF_INET,SOCK_STREAM,0);
bind(server,(SOCKADDR*)&IEPServer,sizeof(IEPServer));
listen(server,1);
SOCKET sock_client;
sock_client = accept(server,(SOCKADDR*)&IEPClient,&lenClient);
cout<<"Da co ket noi toi server :"<<endl;
char *buff= "Chao ban ! Toi la server";
send(sock_client,buff,strlen(buff),0);
closesocket(server);
WSACleanup();
system("pause");
}
đoạn code trên thì phải khi nào có 1 client kết nối tới nó mới gửi. Vậy mà mình vừa chạy chương trình nó đã gửi rùi