• 最简单的服务端


    主机对象是我们所必须的

    IPEndPoint

    套接字

    socket

    套接字绑定主机对象

    使用套件字开始监听

    socket.listen

    获取监听获得的套接字

    Socket  b=socket.Accept();

    IPAddress myIP = IPAddress.Parse("127.0.0.1");
    IPEndPoint myServer = new IPEndPoint(myIP, 2012);
    Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    mySocket.Bind(myServer);
    mySocket.Listen(20);
    Socket youSocket = mySocket.Accept();


    上面一共出现了连个套接字

    一个是监听套接字 一个就是我们通讯用的通讯套接字

    下面传输下什么

                byte[] bytee = new byte[64];
    string send = "wangxiao";
    bytee = System.Text.Encoding.UTF8.GetBytes(send);
    youSocket.Send(bytee);

    NetworkStream ns = new NetworkStream(youSocket);
    ns.Write(bytee, 0, bytee.Length);

    上面有两种方法

    1.使用通讯套接字的send 方法直接输出 

    2.将套接字包装进一个 基本网络流 然后用网络流的 write 方法输出

    同样的 获取客户端传来的 信息也用两种方法

                byte[] bytereceive = new byte[512];
    youSocket.Receive(bytereceive, bytereceive.Length, 0);
    string strreceive = System.Text.Encoding.UTF8.GetString(bytereceive);

    ns.Read(bytereceive, 0, bytereceive.Length);

    目前为止 是不是有一点了解 看是确多了很多疑问  ?

    我就是这么个感觉;

    IPEndPoint 中的ip地址是不是有规定呢

    要是运行的话 服务端的话 ip地址难得不是特定的么? 或许是因为一台电脑可能有多个iP吧



      下面给出一个控制太的简单服务端

    class Program
    {
    static Socket youSocket;
    static void Main(string[] args)
    {
    IPAddress myIP = IPAddress.Parse("127.0.0.1");
    IPEndPoint myServer = new IPEndPoint(myIP, 2012);
    Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    mySocket.Bind(myServer);
    mySocket.Listen(20);
    while (true)
    {
    youSocket = mySocket.Accept();
    Thread thread = new Thread(() =>
    {
    if (youSocket.Connected)
    Console.WriteLine("链接开始");
    byte[] send = new byte[64];
    NetworkStream ns = new NetworkStream(youSocket);
    string str = "test";
    send = System.Text.Encoding.UTF8.GetBytes(str);
    youSocket.Send(send);
    //Thread.Sleep(1000);
    //ns.Write(send, 0, send.Length);
    //ns.Flush();
    //ns.Close();
    //youSocket.Close();
    //byte[] byterec = new byte[1024];
    //int r= ns.Read(byterec, 0, byterec.Length);
    //Console.WriteLine(System.Text.Encoding.UTF8.GetString(byterec));
    youSocket.Close(1);
    });
    thread.Start();
    }
    }
    }


    在上面的代码中有个有疑惑的地方

     在关闭链接和发送数据的过程中 好像关闭链接和 发送数据不是在同一个线程中进行的

  • 相关阅读:
    $Django 中间件 csrf
    $Django cookies与session--解决无连接无状态问题, session配置
    $Django Form组件
    $Django Paginator分页器 批量创建数据
    $Djangon admin界面 添加表 增删查改
    $Django ajax简介 ajax简单数据交互,上传文件(form-data格式数据),Json数据格式交互
    $Django 多对多-自定义第三张表 基于双下划线的跨表查询(补充)
    $Django 客户端->wsgi->中间组件->urls->views(model,template) 总结+补充(事物,choices,inclusion_tag)!
    $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数
    经典的C++库【转帖】
  • 原文地址:https://www.cnblogs.com/wxzl/p/2323326.html
Copyright © 2020-2023  润新知