zoukankan      html  css  js  c++  java
  • 最简单的服务端

    主机对象是我们所必须的

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


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

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

  • 相关阅读:
    NW.js开发环境的搭建
    EXPORTS与MODULE.EXPORTS的区别
    搭建 webpack + React 开发环境
    require,import区别?
    数据库中图片的二进制存储和显示
    二进制图片存储问题
    单线程(Thread)与多线程的区别
    软件测试心得--悲催我
    2015年-年度总结
    人生当中第一次转正
  • 原文地址:https://www.cnblogs.com/wxzl/p/2323326.html
Copyright © 2011-2022 走看看