无法连接到本地网络中的服务器

时间:2017-10-19 01:45:08

标签: c++ networking server debian telnet

我有2台电脑。当我的客户端在Windows PC上运行时,我的服务器在Debian上运行。 我的服务器的IP是192.168.2.113,我的客户端是192.168.2.122。

当我在Server Machine上telnet 127.0.0.1或192.168.2.113时没有问题。 问题是我无法从客户端连接到服务器。

我通过iptables打开了端口50002,注释为:

sudo iptables -A INPUT -p tcp --dport 50002 --jump ACCEPT

我的服务器的main.cpp:

#include<stdio.h>
#include<string.h>  //strlen
#include<sys/socket.h>
#include<arpa/inet.h>   //inet_addr
#include<unistd.h>  //write

int main(int argc , char *argv[])
{
int socket_desc , client_sock , c , read_size;
struct sockaddr_in server , client;
char client_message[2000];

//Create socket
socket_desc = socket(AF_INET , SOCK_STREAM , 0);
if (socket_desc == -1)
{
    printf("Could not create socket");
}
puts("Socket created");

//Prepare the sockaddr_in structure
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons( 50002 );

//Bind
if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
{
    //print the error message
    perror("bind failed. Error");
    return 1;
}
puts("bind done");

//Listen
listen(socket_desc , 3);

//Accept and incoming connection
puts("Waiting for incoming connections...");
c = sizeof(struct sockaddr_in);

//accept connection from an incoming client
client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);
if (client_sock < 0)
{
    perror("accept failed");
    return 1;
}
puts("Connection accepted");

//Receive a message from client
while( (read_size = recv(client_sock , client_message , 2000 , 0)) > 0 )
{
    //Send the message back to client
    write(client_sock , client_message , strlen(client_message));
}

if(read_size == 0)
{
    puts("Client disconnected");
    fflush(stdout);
}
else if(read_size == -1)
{
    perror("recv failed");
}

return 0;
}

我发现奇怪的是我可以在firefox中连接到www.google.com但不能在telnet(在我的客户端PC上)连接到:

telnet&gt; o www.google.com 80

我只得到400-badrequest错误

帮助很贴切。

0 个答案:

没有答案