2017-07-29 4 views
-1

だから私はCで、単純なTCPサーバを作成するには、このガイド
http://www.binarytides.com/winsock-socket-programming-tutorial/
を、次のされている、これは私が思い付いたコードですhttps://pastebin.com/CDxiLv3b
Winsockのは、同じコンピュータからの接続を受け入れるはなく、同じネットワークから

int c; 
char client_message[2000]; 
int recv_size; 
printf("\nInitialising Winsock..."); 
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) 
{ 
    printf("Failed. Error Code : %d", WSAGetLastError()); 
    return 1; 
} 

printf("Initialised.\n"); 

//Create a socket 
if ((server_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) 
{ 
    printf("Could not create socket : %d", WSAGetLastError()); 
} 

printf("Server Socket created.\n"); 

memset(&server_addr, 0, sizeof(server_addr)); 
//Prepare the sockaddr_in structure 
server_addr.sin_family = AF_INET; 
server_addr.sin_addr.s_addr = INADDR_ANY; 
server_addr.sin_port = htons(port); 

//Bind 
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) 
{ 
    printf("Bind failed with error code : %d", WSAGetLastError()); 
} 

printf("Bind to port %d done.\n", port); 

//Listen to incoming connections 
listen(server_socket, 3); 

//Accept and incoming connection 
puts("Waiting for incoming reverse shell..."); 

c = sizeof(struct sockaddr_in); 
while ((client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &c)) != INVALID_SOCKET) 
{ 
    puts("Connection accepted"); 
    if ((recv_size = recv(client_socket, client_message, 2000, 0)) == SOCKET_ERROR) 
    { 
     puts("recv failed"); 
     break; 
    } 
    client_message[recv_size] = '\0'; 
    strcpy_s(path, MAX_PATH_LEN, client_message); 
    break; 
} 

if (client_socket == INVALID_SOCKET) 
{ 
    printf("accept failed with error code : %d", WSAGetLastError()); 
    return 1; 
} 

return 0; 


(はい、私はbasiclyコピーしてものを変更)
今の問題は、私だけに接続することができるということですこのサーバは同じ接続を使用していますが、ネットワーク上の異なるコンピュータを使用して接続することはできません。ポート(実際には問題にならないはずです)を開いても、ネットワーク上の異なるコンピュータ(同じコンピュータからのみ)

+0

「動作しません」を定義してください。 – EJP

+0

どのインターフェース(ip)ではリッスンしているプログラム(netstatで確認できます)と、どのipで他のマシンから接続していますか? – Juan

+0

は動作しませんネットワーク内の他のコンピュータからの接続を受け付けないことを意味します(IPリスティング)、私のローカルコンピュータ(動作する場所)と私のネットワーク内の他のコンピュータ(10.0.0.14) – NacOJerk

答えて

1

ファイアウォールでポートを開くだけで済みました。

+0

あなたは非常によくあなた自身の答えを受け入れることができます。 – alk

関連する問題