Socket--不同客户端程序之间的简易交互方式

前一段有这么一个开发需求,需要在电脑的web程序调用C#的win程序,然后两个程序进行通信。

刚接到这个需求的时候完全是懵的,没有一点头绪。然后上网查了一些,说的都是修改注册表,然后web可以调用win程序。但总感觉和我想要的可以程序之间可以交互的东西不一样。在网上找了各种方案,都因为各种原因给否定了。最后我甚至想两个客户端都和服务器进行HTTP通信,服务器充当它们之间的交互桥梁。然后仔细想了一下,为什么不能在win程序建立一个小的服务器呢?在此基础上,还可以再把HTTP简化成Socket通信。

方案出来了,首先在win程序上面建立一个WebSocket服务端,开启监听通道。然后web程序与win程序建立连接。两个程序之间使用已经定义好的文本格式进行指令的传输,完美。

其实在大学的时候,我就已经用C语言写了Socket的服务端和客户端之间进行通信,但因为当时什么都不懂,就只是查了一些资料,简单的完成了一发一收的通信而已。不过正是因为之前的这个积累,知道了原来只要有网络,程序之间可以Socket这种简易的方式进行通信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 C# socket 聊天示例代码,其中使用了 TCP 协议。 服务端代码: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Text; namespace SocketServer { class Program { static void Main(string[] args) { IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 1234); TcpListener listener = new TcpListener(localEndPoint); listener.Start(); Console.WriteLine("Server started, waiting for client to connect..."); TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Client connected: " + client.Client.RemoteEndPoint.ToString()); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; while (true) { int bytesRead = stream.Read(buffer, 0, buffer.Length); string message = Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("Received message: " + message); if (message == "quit") break; Console.Write("Enter your message: "); string replyMessage = Console.ReadLine(); byte[] replyBuffer = Encoding.ASCII.GetBytes(replyMessage); stream.Write(replyBuffer, 0, replyBuffer.Length); } stream.Close(); client.Close(); listener.Stop(); } } } ``` 客户端代码: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Text; namespace SocketClient { class Program { static void Main(string[] args) { IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234); TcpClient client = new TcpClient(); client.Connect(remoteEndPoint); Console.WriteLine("Connected to server: " + client.Client.RemoteEndPoint.ToString()); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; while (true) { Console.Write("Enter your message: "); string message = Console.ReadLine(); byte[] messageBuffer = Encoding.ASCII.GetBytes(message); stream.Write(messageBuffer, 0, messageBuffer.Length); int bytesRead = stream.Read(buffer, 0, buffer.Length); string replyMessage = Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("Received message: " + replyMessage); if (message == "quit") break; } stream.Close(); client.Close(); } } } ``` 以上代码演示了一个简单的 TCP socket 聊天程序,运行服务端程序,然后运行两个客户端程序,可以在客户端之间进行消息的收发和交互

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值