Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 安全软件讨厌我的插座_C_Security_Sockets_Winsock - Fatal编程技术网

C 安全软件讨厌我的插座

C 安全软件讨厌我的插座,c,security,sockets,winsock,C,Security,Sockets,Winsock,我正在编写一个程序,我想分发给其他人,但它使用套接字,大多数安全软件将其视为恶意软件。我如何让这个程序工作,而不告诉人们降低他们的防火墙和豁免扫描程序?我的套接字可能有问题,或者这是我的程序没有数字证书的问题 #include <stdio.h> #include <stdlib.h> #include <winsock2.h> int client(char *ip,int port,SOCKET *sock) { struct sockaddr_i

我正在编写一个程序,我想分发给其他人,但它使用套接字,大多数安全软件将其视为恶意软件。我如何让这个程序工作,而不告诉人们降低他们的防火墙和豁免扫描程序?我的套接字可能有问题,或者这是我的程序没有数字证书的问题

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
int client(char *ip,int port,SOCKET *sock)
{
    struct sockaddr_in addr;
    *sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr(ip);
    addr.sin_port = htons(port);
    connect(*sock,(SOCKADDR*)&addr,sizeof(addr));
    return 2;
}
void ssend(char *buffer,int len,SOCKET sock)
{
    int sent;
    int *tmp;
    char head[4];
    sent=0;
    tmp=(int*)&head;
    *tmp=htonl(len);
    while(sent<4)
    {
        sent+=send(sock,head,4-sent,0);
    }
    sent=0;
    while(sent<len)
    {
        sent+=send(sock,buffer,len-sent,0);
    }
}
void srecv(char *buffer,int *len,SOCKET sock)
{
    char head[4];
    recv(sock,head,4,MSG_WAITALL);
    *len=ntohl(*((int*)head));
    recv(sock,buffer,*len,MSG_WAITALL);
}
int main(int argc,char **argv)
{
    WSADATA dat;
    WSAStartup(MAKEWORD(2, 2),&dat);
    SOCKET sock;
    char ip[256];
    char msg[1024];
    int port;
    scanf("%s",ip);
    scanf("%d",&port);
    printf("%d\n",client(ip,port,&sock));
    while(1)
    {
        scanf("%s",msg);
        ssend(msg,strlen(msg),sock);
    }
}
#包括
#包括
#包括
int客户端(字符*ip、int端口、套接字*sock)
{
地址中的结构sockaddr\u;
*sock=套接字(AF_INET、sock流、IPPROTO_TCP);
addr.sin_family=AF_INET;
addr.sin\u addr.s\u addr=inet\u addr(ip);
地址SINU port=htons(端口);
连接(*sock,(SOCKADDR*)和addr,sizeof(addr));
返回2;
}
无效ssend(字符*缓冲区、整数长度、套接字套接字)
{
int发送;
int*tmp;
炭头[4];
发送=0;
tmp=(int*)和head;
*tmp=htonl(len);

while(sent您无能为力。防火墙软件无法区分“打电话回家”或在其他机器上发起攻击的恶意软件和合法程序。用户必须对此给出明确的例外情况

好的,您可以做一件事:让您的程序在广泛使用的端口上工作,如HTTP端口80或SSL端口443


如果规则是基于程序的身份,而不仅仅是端口,甚至不确定这是否会有帮助。有一个很好的理由限制哪些应用程序可以通过端口80进行HTTP连接。端口80经常被恶意软件用于打电话回家和下载恶意crud。

很难说,但无法看到您在做什么。哦当然,我会添加我的代码。这些代码使用POSIX套接字,但大多数Linux发行版没有“安全软件”将可执行文件标记为恶意软件…这个程序应该在什么操作系统上运行?@Borealid看起来像Windows,从使用
WSA
函数来判断。@JeffreyHantin:你是对的。Winsock2被包括在Windows套接字中。像Minecraft或所有其他游戏这样的程序呢?安全软件从来没有出现过为使用套接字而兴奋的Python。这是因为Python和Java解释器有数字证书还是什么?这有点不清楚。我只是觉得专业开发的程序不知何故不会被我的安全软件不断删除,不像我编写的程序。啊,可能会发生的是安装程序对于软件,将程序添加到注册表中的授权应用程序列表中。我认为
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\list