1

我正在尝试学习 sfml,下面的代码不是我自己的。以后我会写我自己的。现在我需要知道为什么连接没有连接到我的真实 ip,但是当我使用我的本地 ip 时可以工作。

这是我的代码

#include<SFML/Graphics.hpp>
#include<SFML/Network.hpp>
#include<iostream>
#include<stdlib.h>
#include<ctime>

int main()
{
    sf::IpAddress ip = "142.187.215.01"; // works with 127.0.0.1 or sf::IpAddress::localhost
    std::cout << ip;
    sf::TcpSocket socket; 
    char connectionType;
    std::string text = "";
    char buffer[2000], mode = 'r';
    std::size_t received;

    std::cout << "Enter (s) for Server, Enter (c) for Client: "; 
    std::cin >> connectionType;

    if(connectionType == 's')
    {
        sf::TcpListener listener;
        listener.listen(2000);
        listener.accept(socket);
        text += "Server";
        mode = 's';
    }
    else if(connectionType == 'c')
    {
        socket.connect(ip, 2000);
        text += "Client";
    }

    socket.send(text.c_str(), text.length() + 1);
    socket.receive(buffer, sizeof(buffer), received);

    std::cout << buffer << std::endl;

    bool done = false; 

    while(!done)
    {
        if(mode == 's')
        {
            std::getline(std::cin, text);
            socket.send(text.c_str(), text.length() + 1);
            mode = 'r';
        }
        else if(mode == 'r')
        {
            socket.receive(buffer, sizeof(buffer), received); 
            if(received > 0)
            {
                std::cout << "Received: " << buffer << std::endl; 
                mode = 's';
            }
        }
    }
    return 0; 
}
4

0 回答 0