文档章节

简单的遵从TCP协议的连接

Mstart
 Mstart
发布于 2016/07/27 10:12
字数 311
阅读 4
收藏 0

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);

            

        }

    }

 

}

© 著作权归作者所有

共有 人打赏支持
Mstart
粉丝 10
博文 62
码字总数 17890
作品 0
南通
程序员
私信 提问
libmodbus

libmodbus 是 Modbus 协议栈,包括RTU和TCP功能。libmodbus 支持 Linux, Mac OS X, FreeBSD, QNX 和 Win32 系统。libmodbus 可以从遵从 Modbus 协议的设备发送和接收数据,通常使用一系列的端...

王清涛
2014/06/27
3K
0
TCP和UDP在网络层实现的不同--基于linux内核

由于4层协议实现复杂度的不对称性,导致3层协议实现也不易统一,换句话说就是同样的3层协议比如IP要为不同的4层协议提供不同的实现,这是因为我们熟知的4层协议分为流和数据报两种类型,流式...

晨曦之光
2012/04/10
403
0
AMQP.0-10中文版——概述

AMQP.0-10中文版——概述 第1章 概述 1.1. 本文档的目标 这份文档定义了高级消息队列协议,这个协议使得遵从该协议的客户端应用和消息中间件服务器之间能够互相通信。为了完全实现互操作性,...

Sophia_tj
2015/12/08
29
0
socket连接和http连接的区别

socket连接和http连接的区别 HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的 tcp协议: 对应于传输层 ip协议: 对应于网络层 TCP/IP是传输层协议,主要解决数据如何在...

随智阔
2013/08/25
0
1
TCP和Http的区别!我都搞懂了,你就别迷糊了!

相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。 1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可...

yzbty23
2015/12/22
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部