局域网内启用服务Service功能进行消息传递

实际工程经常会碰到在局域网内进行消息传递,如IOT控制,工控机控制等。本文描述了如何在利用socket通信方式在服务器端和客户进行消息传递。为了保证服务端时刻监听客户端发来的消息,在服务端设立service的功能。该文章涉及的技术要点:

  • 利用Socket在服务端和客户端进行消息传递;
  • 在本地启用Service的功能时刻监听客户的响应;

1. 创建服务端工程文件(service)

(1). 创建SocketService的类,要在服务端单独启动一个监听线程。为了验证能正确收到信息,在监听线程中增加了保存txt文件的功能。就是说如果服务端收到客户端发送的信息会在本地保存为txt文件。该服务功能可以接收局域网内任何IP发送过来的信息,但通信端口要保证服务端和客户端一致。

using System;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading;
using System.IO;

namespace SocketService
{
    public class TcpServer
    {
        private TcpListener tcpListener;
        private Thread listenThread;
        private int heartbeatInterval;
        private string txtFilePath = "c:\\Temp";
        private string fileName = "ReceivedString.txt";

        public TcpServer(int port, int heartbeatIntervalInSeconds)
        {
            IPAddress ipAddress = IPAddress.Any;
            //IPAddress ipAddress = IPAddress.Parse("192.168.1.5");
            tcpListener = new TcpListener(ipAddress, port);
            heartbeatInterval = heartbeatIntervalInSeconds * 1000;
        }

        public void Start()
        {
            tcpListener.Start();
            Console.WriteLine("服务端已启动,等待客户端连接...");
            listenThread = new Thread(new ThreadStart(ListenForClients));
            listenThread.Start();
        }

        private void ListenForClients()
        {
            while (true)
            {
                TcpClient client = tcpListener.AcceptTcpClient();
                Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientCommunication));
                clientThread.Start(client);
            }
        }

        private void HandleClientCommunication(object client)
        {
            TcpClient tcpClient = (TcpClient)client;
            string clientEndPoint = tcpClient.Client.RemoteEndPoint.ToString();
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值