動作テストということで数人の友人に協力してもらい、起動してもらったのですがスマートスクリーンやノートンが総動員してプログラムを削除してしまったそうです。
一人だけ、普通に起動できた人がいて正しく通信できました。
どうしたらウイルス扱いされないか教えてもらいたいです。宜しくお願いします
以下サーバとクライアントのソース
//サーバー側
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <conio.h>
DWORD WINAPI RecvFunc(LPVOID vdParam);
#pragma comment(lib, "wsock32.lib")
int main(){
SOCKET sock;
int mode;
char username[20], recvmes[500], sendmes[500], buf[500];
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 0), &wsaData);
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKET hsock[20];
sockaddr_in addr, client;
int connectc = 0;
int sockno[20];
fd_set fds, rfds;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(25555);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
printf("-----サーバーモードで起動-----\n\n");
bind(sock, (struct sockaddr *)&addr, sizeof(addr));
listen(sock, 20);
FD_ZERO(&rfds);
FD_SET(sock, &rfds);
while (1){
int len = sizeof(client);
memcpy(&fds, &rfds, sizeof(fd_set));
select(0, &fds, NULL, NULL, NULL);
if (FD_ISSET(sock, &fds)){
char name[500];
memset(buf, 0, sizeof(buf));
hsock[connectc] = accept(sock, (struct sockaddr *)&client, &len);
recv(hsock[connectc], name, sizeof(name), 0);
sprintf(buf, "Server>%sが接続しました\n\n", name);
FD_SET(hsock[connectc], &rfds);
printf(buf);
connectc++;
for (int i = 0; connectc > i; i++){
send(hsock[i], buf, sizeof(buf), 0);
}
}
else {
for (int i = 0; connectc > i; i++){
if (FD_ISSET(hsock[i], &fds)){
memset(buf, 0, sizeof(buf));
recv(hsock[i], buf, sizeof(buf), 0);
printf("%s",buf);
for (int c = 0; connectc > c; c++){
if (i != c)
send(hsock[c], buf, sizeof(buf), 0);
}
}
}
}
}
WSACleanup();
return 0;
}
//クライアント側
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <conio.h>
#pragma comment(lib, "wsock32.lib")
DWORD WINAPI RecvFunc(LPVOID vdParam);
int main(){
SOCKET sock;
char username[20], recvmes[500], sendmes[500], buf[500];
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 0), &wsaData);
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
printf("ユーザーネームを入力してください\n");
scanf("%s", username);
sockaddr_in server;
LPHOSTENT lpHostEntry;
char *lpHostName = "サーバーの名前";
HANDLE recvth;
DWORD dwParam;
lpHostEntry = gethostbyname(lpHostName);
server.sin_family = AF_INET;
server.sin_port = htons(25555);
server.sin_addr = *((LPIN_ADDR) lpHostEntry->h_addr_list[0]);
printf("-----クライアントモードで起動-----\n\n");
printf("接続待ち・・・");
while (connect(sock, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR){
printf("・");
}
recvth = CreateThread(NULL, 0, RecvFunc, &sock, 0, &dwParam);
send(sock, username, sizeof(username), 0);
printf("\n\nConnection!\n");
while (1){
memset(recvmes, 0, sizeof(recvmes));
memset(sendmes, 0, sizeof(sendmes));
memset(sendmes, 0, sizeof(buf));
scanf("%s", buf);
printf("\n");
sprintf(sendmes, "%s>%s\n\n", username, buf);
send(sock, sendmes, sizeof(sendmes), 0);
}
closesocket(sock);
GetExitCodeThread(recvth, &dwParam);
WSACleanup();
return 0;
}
DWORD WINAPI RecvFunc(LPVOID vdParam) {
SOCKET* sock = (SOCKET*) vdParam;
char buf[500];
while (1){
if (recv(*sock, buf, sizeof(buf), 0) == -1){
printf("%d", WSAGetLastError());
break;
}
printf("%s", buf);
}
return 1;
}