最近,我接到了一个任务...
“开发可以安装在办公室或企业的各种 Windows 机器上的 Windows 窗体应用程序。只有一台机器(ALPHA 机器)中会有一个数据库。这个数据库将被其他 Beta 机器上的应用程序用来访问数据. 应用程序本身会设法检查它是 Alpha 还是 Beta(有数据库文件吗?),因此必须充当服务器或客户端。”
除了网络和应用程序间通信要求之外,我什么都能做。所以,我开始在互联网上学习套接字编程,我已经浏览了这个链接......
我正在努力的想法是......
- 让客户端将消息发送到服务器。
- 让服务器接受此消息并将此消息放入队列中。
- 阅读消息以获取客户端的 IP 地址及其数据请求。
- 将此请求应用于数据库并获取结果。
- 将结果转换为字符串。
- 将其发送给请求的客户端。
我可以设法执行步骤 3,4 和 5。我被困在 1、2 和 6 上。
朝着这个...
我为服务器以及在调用时返回套接字的客户端创建了一个函数。我创建了一个单独的函数,因为我希望我的代码在多年之后变得干净、整洁且易于理解。
在下面检查我的代码...
对于服务器...
private Socket GetServerReady()
{
IPEndPoint RemoteEP = new IPEndPoint(IPAddress.Any, 8000);
Socket newSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
newSock.Connect(RemoteEP);
newSock.Listen(10);
return (newSock);
}
您会注意到任何地方都没有 Accept() 方法,这是因为我希望像下面这样调用它以供进一步使用...
Socket CltSock = GetServerReady().Accept();
客户代码是...
private Socket GetClientReady()
{
IPEndPoint RemoteEP = new IPEndPoint(IPAddress.Parse(txtBxHost2.Text.Trim()), 8000);
Socket ServerSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ServerSock.Connect(RemoteEP);
return (ServerSock);
}
最后,问题是......
“调用我上面写的函数的合适位置在哪里?”
“我应该在 Form_Load() 事件中调用服务器和客户端函数吗?”
“我的主要意图是上面提到的第 1,2 和 6 点,下一步必须是什么?”
我不希望我可以照原样复制完整的代码。只需正确的程序和概念上的一些细节就可以了。
我将只使用一台 PC 进行测试。此外,另一个限制是,它将全部编码在一个应用程序中。我不想为客户端和服务器编写两个单独的应用程序。
我希望我把一切都说清楚了,让你明白。
多谢。
等待回复。