请原谅我重复的问题。我知道这里已经多次询问过,但没有一个答案对我有用,没有一个场景与我的完全相同,而且很多问题都没有答案。
我已经为大学开展了几个星期的项目,但现在我们的任务是将完整的,有效的应用程序更改为客户端 - 服务器应用程序(项目的详细信息无关紧要)。我计划创建一个隐藏的控制台应用程序并充当服务器(主要处理将在我的数据库上执行的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));