Собственно нашёл исходник сервера и клиента, которые передаю сообщения. Задумка заключаеться в том что сервер стоит на удалённом компьютере, а клиент запускаеться на любом другом, В общем нужно зделать так чтобы сервер закрывал соединение по порту например 44405 если нету связи с клиентом но ИП коннектиться на этот ИП, а если связь есть с клиентом то разрешал...
Код клиента :
C++ Source Code:
1
#include <windows.h>
2
#include <winsock.h>
3
#include <stdio.h>
4
#include <iostream.h>
5
#include <conio.h>
6
#include <signal.h>
7
#include <stdio.h>
8
9
//DECLARATIONS
10
//error trapping signals
11
#define SIGINT 2
12
#define SIGKILL 9
13
#define SIGQUIT 3
14
// SOCKETS
15
SOCKET sock,client;
16
17
void s_handle(int s)
18
{
19
if(sock)
20
closesocket(sock);
21
if(client)
22
closesocket(client);
23
WSACleanup();
24
Sleep(1000);
25
cout<<"EXIT SIGNAL :"<<s;
26
exit(0);
27
}
28
29
30
void s_cl(char *a, int x)
31
{
32
cout<<a;
33
s_handle(x+1000);
34
}
35
36
37
int main()
38
{
39
SetConsoleTitle(".:: Basic Echo Client By KOrUPt 07 ::. ");
40
41
42
//Declarations
43
//DWORD poll;
44
char RecvdData[100] = "";
45
int ret;
46
int res,i=1,port=999;
47
char buf[100];
48
char msg[100] = "";
49
WSADATA data;
50
51
signal(SIGINT,s_handle);
52
signal(SIGKILL,s_handle);
53
signal(SIGQUIT,s_handle);
54
55
sockaddr_in ser;
56
sockaddr addr;
57
58
59
ser.sin_family=AF_INET;
60
ser.sin_port=htons(55902); //Set the port
61
ser.sin_addr.s_addr=inet_addr("83.99.185.51"); //Set the address we want to connect to
62
63
memcpy(&addr,&ser,sizeof(SOCKADDR_IN));
64
65
res = WSAStartup(MAKEWORD(1,1),&data); //Start Winsock
66
67
if(res != 0)
68
s_cl("WSAStarup failed",WSAGetLastError());
69
70
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //Create the socket
71
if(sock==INVALID_SOCKET )
72
s_cl("Invalid Socket ",WSAGetLastError());
73
elseif(sock==SOCKET_ERROR)
74
s_cl("Socket Error)",WSAGetLastError());
75
else
76
cout<<"Socket Established"<<endl;
77
78
79
80
res=connect(sock,&addr,sizeof(addr)); //Connect to the server
81
if(res !=0 )
82
{
83
s_cl("SERVER UNAVAILABLE",res);
84
}
85
else
86
{
87
memcpy(&ser,&addr,sizeof(SOCKADDR));
88
}
89
90
strcpy(buf,"hello");
91
res = send(sock,buf,sizeof(buf),0);
92
93
ret = recv(sock,RecvdData,sizeof(RecvdData),0);
94
if(ret > 0)
95
{
96
cout<<RecvdData;
97
strcpy(RecvdData,"");
98
}
99
100
cout << RecvdData << endl;
101
102
103
while(true)
104
{
105
strcpy(buf,"hello");
106
cout<<"\nEnter message to send ->\n";
107
fgets(buf,sizeof(buf),stdin);
108
109
110
Sleep(5);
111
//res = send(sock,buf,sizeof(buf),0);
112
113
if(res==0)
114
{
115
//0==other side terminated conn
116
printf("\nSERVER terminated connection\n");
117
Sleep(40);
118
closesocket(client);
119
client = 0;
120
break;
121
}
122
elseif(res==SOCKET_ERROR)
123
{
124
//-1 == send error
125
printf("Socket error\n");
126
Sleep(40);
127
s_handle(res);
128
break;
129
}
130
131
ret = recv(sock,RecvdData,sizeof(RecvdData),0);
132
if(ret > 0)
133
{
134
cout<<endl<<RecvdData;
135
strcpy(RecvdData,"");
136
}
137
}
138
139
closesocket(client);
140
WSACleanup();
141
142
return 0;
143
}
Код сервера :
C++ Source Code:
1
#include <windows.h>
2
#include <stdlib.h>
3
#include <stdio.h>
4
#include <winsock.h>
5
#include <iostream>
6
usingnamespace std;
7
8
// our thread for recving commands
9
DWORD WINAPI receive_cmds(LPVOID lpParam)
10
{
11
printf("AntiHack -> server -> thread created\r\n");
12
13
// set our socket to the socket passed in as a parameter
14
SOCKET current_client = (SOCKET)lpParam;
15
16
// buffer to hold our recived data
17
char buf[100];
18
// buffer to hold our sent data
19
char sendData[100];
20
// for error checking
21
int res;
22
23
// our recv loop
24
while(true)
25
{
26
res = recv(current_client,buf,sizeof(buf),0); // recv cmds