簡體   English   中英

客戶端服務器套接字C#通信

[英]Client Server Socket C# communication

我已經使用客戶端套接字和服務器套接字使用C#編寫了群聊。 當我使用VS 2017在自己的電腦中運行程序(服務器和客戶端)時,客戶端和服務器之間的通信正常。當我在筆記本電腦中運行客戶端程序並且在自己的電腦中運行服務器時(仍使用VS 2017) ,盡管我認為這無關緊要),但客戶端未連接到服務器。

我的問題是如何在本地主機之外連接服務器和客戶端?

我將從服務器和客戶端添加負責相互連接的功能。

啟動服務器的服務器代碼中的函數:

public static void ServerUp()
{
    IPAddress ipAdd = IPAddress.Parse("127.0.0.1");
    TcpListener myListener = new TcpListener(ipAdd, 8001);
    myListener.Start();
    Console.WriteLine("The server running at port: " + myListener.LocalEndpoint);
    users = new List<ClientSocket>();
}

連接到服務器的客戶端代碼中的功能:

public static void ConnectToServer()
{
    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    Console.WriteLine("Connecting...");
    IPEndPoint ipAdd = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001);
    socket.Connect(ipAdd);
    Console.WriteLine("Connected");
    Console.WriteLine(new string('-',Console.WindowWidth));
}

如果您在另一台計算機上運行客戶端,則它將跨網絡。

除非您以某種方式為服務器打開了防火牆端口,否則Windows集成防火牆將阻止來自外部源的所有訪問。

就那么簡單。

轉到高級防火牆設置,然后打開服務器的端口。

更改IP。 127.0.0.1用於本地主機。 使用您的本地網絡IP,例如192.168.1.10等。還要在服務器計算機的防火牆上打開所需的端口(8001)。

您需要服務器偵聽PC的真實IP地址而不是127.0.0.1,並且在客戶端的便攜式計算機上,您還必須使用計算機的IP地址而不是127.0.0.1。

127.0.0.1是本地網絡地址,它不受網絡連接的約束,只能在同一台計算機上訪問,而不能在網絡上訪問。

此外,您的Windows防火牆可能會阻止傳入連接-為計算機的端口8001添加入站tcp規則,或者暫時禁用計算機上的防火牆。

127.0.0.1是本地IP,請使用網絡的DHCP服務器分配的IP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM