C#中客户端和服务端之间实现关机

来源:互联网 发布:图纸绘制软件 编辑:程序博客网 时间:2024/06/06 03:45

  一 C#中客户端和服务端之间实现关机

       对于简单通信,我也就看了一点点,这里面肯定要用到Socket套接字,我对其理解就像人与人打电话,你就首先需要一部手机吧,刚好Socket套接字就充当了这个作用,其实Socket用来让一个进程和其他的进程互通信息.Socket(套接字)是一种网络编程接口,一个套接字是通信的一端。(对于Socket的详细信息百度上面有)

      实现的主要步骤:服务器监听,客户端请求,连接确认。

        (1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

         (2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

         (3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

  二   服务器(C#)代码

    

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;namespace 服务器{    class Program    {        static void Main(string[] args)        {            Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            IPEndPoint ipe = new IPEndPoint(IPAddress.Any,8888);  //服务器的端口是8888            s1.Bind(ipe);  //绑定            s1.Listen(8);  //监听            Console.WriteLine("等待链接中......");            Socket client = s1.Accept();     // 接受客户端            Console.WriteLine("链接成功!!");            client.Close();           // 关闭客户端            s1.Close();            //关机            System.Diagnostics.Process.Start("shutdown.exe", "-s -t 300");            Console.ReadLine();        }    }}


  三  客户端  (C#)代码

   

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;namespace 客户端{    class Program    {        static void Main(string[] args)        {            Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            Console.WriteLine("输入服务器的IP地址:");            string address = Console.ReadLine();            Console.WriteLine();//回车换行            Console.WriteLine("请输入服务器端口:");            int port = Convert.ToInt32(Console.ReadLine());            IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(address),port);//服务器的ip和端口            s1.Connect(ipe);            s1.Close();            Console.ReadLine();        }    }}

   四   对于一些概念的解释

    TCP(传输控制协议):面向连接的TCP
     TCP的连接通俗易懂的说法就是3次握手,用百度百科里面的最形象的解释:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
     TCP协议的通信一旦建立,它可以很准确的发送消息,我可以给你发消息,你也可以给我发消息,比如打电话。一般对于如何特别要求可靠性的话就考虑TCP协议传输数据,
     TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。


UDP(传输控制协议):
     面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接发送,像短信,QQ),不能提供可靠性、流控、差错恢复功能。UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。



   


0 0