无法建立连接,因为目标计算机主动拒绝它(C#)

时间:2018-06-02 23:48:25

标签: c# sockets client-server

请原谅我重复的问题。我知道这里已经多次询问过,但没有一个答案对我有用,没有一个场景与我的完全相同,而且很多问题都没有答案。

我已经为大学开展了几个星期的项目,但现在我们的任务是将完整的,有效的应用程序更改为客户端 - 服务器应用程序(项目的详细信息无关紧要)。我计划创建一个隐藏的控制台应用程序并充当服务器(主要处理将在我的数据库上执行的SQL查询,然后根据这些查询的结果创建对象,序列化它们并将它们发送到客户端)。客户端应用程序是Windows窗体应用程序。

我是新手使用套接字(3天前才开始使用它们但是我相信我很了解它们 - 我能够从知识(和逻辑)重新创建客户端 - 服务器聊天应用程序而无需参考我的代码给了。)

我已经做了很多研究来尝试解决它,但现在我已经尝试了一切,我希望有人可以帮助我。

我遇到的问题是我的客户端无法连接到服务器。在我的“练习”应用程序中,我没有遇到此问题,客户端始终设法连接。

我试过了:

  • 通过防火墙允许服务器(控制台)和客户端(表单)应用程序
  • 完全禁用防火墙
  • 确保服务器正在侦听客户端提供的正确端口号
  • 我甚至从我的项目中复制粘贴代码(只是套接字部分)并创建了新的服务器和客户端应用程序(它们完全正常,完全相同的代码,放在与原始代码完全相同的位置,在新的“测试”应用程序,但不在我的项目中)

在尝试这些事情没有成功之后,我意识到很可能不是防火墙是问题而且我使用的端口号不会有问题,因为具有相同端口号的完全相同的代码在我的“测试”应用程序。

我尝试按照以下答案运行netstat -anb:https://stackoverflow.com/a/9695442/9886482 我无法在任何地方看到端口号。

我在stackoverflow上看到的一些其他答案对我没有帮助,因为他们中的大多数都使用的是Web服务或实际的服务器软件,这与我的情况不相关或不允许。

我试图提供尽可能多的信息,这是我的代码。任何帮助将不胜感激。

服务器代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HelperLibrary;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace Farmulator_PRG221_Project
{
class Program
{

    static void Main(string[] args)
    {
        Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
        serverSocket.Bind(new IPEndPoint(IPAddress.Loopback, port: 9000));
        serverSocket.Listen(50);
        Thread accepterThread = new Thread(new ParameterizedThreadStart(Accept));
        accepterThread.Start(serverSocket);
    }

    static void Accept(object obj)
    {
        Socket serverSocket = (Socket)obj;

        while (true)
        {
            Socket clientSocket = serverSocket.Accept();
            Console.WriteLine("New client connected!");

        }

    }

客户代码:

clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
clientSocket.Connect(new IPEndPoint(IPAddress.Loopback, port: 9000));

0 个答案:

没有答案