Thuc Hanh Socket
Thuc Hanh Socket
1. Tạo chương trình client sử dụng Socket trong thư viện winsock
1.1 Khởi tạo chương trình :
- Khởi tạo project C++ dạng console trên Codeblocks
- Thêm tham số -lws2_32 vào phần Linker options
- Khai báo thư viện sử dụng trong chương trình:
#include<winsock2.h>
#include "iostream"
using namespace std;
#pragma comment(lib,"ws2_32.lib") //Winsock Library
cout<<"\nInitialising Winsock...";
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
cout<<"Failed. Error Code : "<<WSAGetLastError();
return 1;
}
cout<<"Initialised.\n";
cout<<"Connected";
return 0;
}
cout<<"\nInitialising Winsock...";
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
cout<<"Failed. Error Code :
%d",WSAGetLastError();
return 1;
}
cout<<"Initialised.\n";
//Create a socket
if((s = socket(AF_INET , SOCK_STREAM , 0 )) ==
INVALID_SOCKET)
{
cout<<"Could not create socket : "<<
WSAGetLastError();
}
cout<<"Socket created.\n";
//Bind
if( bind(s ,(struct sockaddr *)&server ,
sizeof(server)) == SOCKET_ERROR)
{
cout<<"Bind failed with error code : "<<
WSAGetLastError();
exit(EXIT_FAILURE);
}
//Bind
if( bind(s ,(struct sockaddr *)&server ,
sizeof(server)) == SOCKET_ERROR)
{
cout<<"Bind failed with error code : "<<
WSAGetLastError();
exit(EXIT_FAILURE);
}
c = sizeof(struct sockaddr_in);
while( (new_socket = accept(s , (struct sockaddr
*)&client, &c)) != INVALID_SOCKET )
{
cout<<"Connection accepted";
}
if (new_socket == INVALID_SOCKET)
{
printf("accept failed with error code : %d" ,
WSAGetLastError());
return 1;
}
closesocket(s);
WSACleanup();
return 0;
}
if (new_socket == INVALID_SOCKET)
{
printf("accept failed with error code : %d" ,
WSAGetLastError());
return 1;
}
closesocket(s);
WSACleanup();
return 0;
}