简单的遵从TCP协议的连接

本文介绍了一个使用C#实现的基本网络通信程序。该程序作为服务端,通过Ping命令检查网络连通性,并利用Socket进行TCP连接,实现了消息接收功能。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

using System.Net.Sockets;

using System.Threading;

using System.Diagnostics;

using System.Net;

namespace Demo_Net

{

    //本机为服务端

    //下午加一个判断网络是否连接;以及做出相应的判断;

    class Program

    {

        static Socket msock;

        static void Main(string[] args)

        {

         

                //先判断是否ping通:

                string ips = "10.18.14.111";

                string str = NetConnect(ips);

                Console.WriteLine(str);

                Console.ReadLine();

        }

        //通过ping的方法判断是否连接;

        private static string NetConnect(string ip)

        {

            Process p = new Process();

            p.StartInfo.FileName = "cmd.exe";

            p.StartInfo.UseShellExecute = false;

            p.StartInfo.RedirectStandardError = true;

            p.StartInfo.RedirectStandardInput = true;

            p.StartInfo.RedirectStandardOutput = true;

            p.StartInfo.CreateNoWindow = false;

            string pingstr;

            p.Start();

            p.StandardInput.WriteLine("ping -n 1 " + ip);

            p.StandardInput.WriteLine("exit");

            string strRst = p.StandardOutput.ReadToEnd();

            if (strRst.IndexOf("(0% 丢失)") != -1)

            {

                pingstr = "连接成功";

 

                //定义socket连接 需要的本机ip以及相应的端口;

                msock = new Socket(AddressFamily.InterNetwork, SocketType.Stream,                 ProtocolType.Tcp);

                var localIP = new IPEndPoint(IPAddress.Parse("10.18.14.23"), 10001);

                msock.Bind(localIP);

                //自己定义最大网络连接数

                msock.Listen(10);

                //新建线程处理;

                Thread th = new Thread(delegate()

                {

                    Rec();

                });

                th.IsBackground = true;

                th.Start();

            }

             else

            {

                pingstr = "连接超时";

            }

            p.Close();

            return pingstr;

        }

        //监听是否有链接,新开线程处理

        static void Rec()

        {

            do

            {

                Socket s = msock.Accept();

                Thread th = new Thread(delegate() {

                    Parse(s);

                });

                th.IsBackground = true;

                th.Start();

                

            } while (true);

        }

 

        //有链接时处理获取的信息

        static void Parse(Socket s)

        {

            do

            {

                byte[] b = new byte[1000];

                int l = s.Receive(b);

                b = b.Take(l).ToArray();

                string rs = string.Empty;

                for (int i = 0; i < b.Length; i++)

                {

                    rs = rs + b[i].ToString();

                }

                //解码

                Console.WriteLine(Encoding.ASCII.GetString(b, 0, l));

            } while (true);

            

        }

    }

 

}

转载于:https://my.oschina.net/MStart/blog/718823

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值