zoukankan      html  css  js  c++  java
  • C#中的socket编程方法

    服务器:

    第一步,准备socket套接字:Socket sockfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

    第二步,准备Ip地址与端口号(为绑定做准备):IPAddress Ip = new IPAddress(new Byte[]{192.168.1.7});

                                                           :EndPoint point = new IPEndPoint(Ip,7788);

    第三步,绑定Ip地址与端口号:sockfd.Bind(point);

    第四步,监听客户端是否连接:sockfd.Listrn(1024);// 最大的连接数

    第五步,记录及相应客户端的连接请求:Socket client_sockfd = sockfd.Accept();

    第六步,向客户端发送数据:client_sockfd.Send(data);//data可能要做一些转换

    第七步,接收数据:sockfd.Recv();

    客户端与之相似,只需要做微小的改动即可。

    客户端不需要绑定,只需要与服务器进行连接:sockfd.Connect(point); //sockfd是客户端的套接字

    下面是一个没有用到线程的小示例:

    Server

            static void Main(string[] args)
            {
                Socket sockfd = new Socket(AddressFamily.InterNetwork,
                    SocketType.Stream,ProtocolType.Tcp);
                // 准备IP
    //          IPAdderss Ip = new IPAdderss(new byte[]{192,168,1,7});
                IPAddress Ip = IPAddress.Parse("192.168.1.7");
                // 准备端口号
                EndPoint point = new IPEndPoint(Ip,5678);
                //绑定
                sockfd.Bind(point);
                //监听客户端的最大连接数
                sockfd.Listen(1024);
                //响应客户端的连接请求和记录客户端的Ip地址和端口号
                Socket Client_sockfd = sockfd.Accept();
                string message = "hello socket!";
                //Byte[] data = new byte[1024];
                // 向客户端发送数据
                Byte[] data = Encoding.UTF8.GetBytes(message);
                Client_sockfd.Send(data);

                // 接收客户端发送的数据
                Byte[] data2 = new byte[1024];
                int lenth = Client_sockfd.Receive(data2);
                string buf = Encoding.UTF8.GetString(data2, 0, lenth);
                Console.WriteLine(buf);

                Console.ReadKey();
            }
        }

    Client

        static void Main(string[] args)
        {
            Socket sockfd = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress Ip = IPAddress.Parse("192.168.1.7");
            EndPoint point = new IPEndPoint(Ip, 5678);

            sockfd.Connect(point);
            // 接收服务器发来的消息
            Byte[] data = new byte[1024];
            int lenth = sockfd.Receive(data);
            string message = Encoding.UTF8.GetString(data,0,lenth);
            Console.WriteLine(message);
            Console.WriteLine("请输入要发送的数据:");
            string buf = Console.ReadLine();
            Byte[] sdata = Encoding.UTF8.GetBytes(buf);
            sockfd.Send(sdata);
            Console.ReadKey();
        }

    }

  • 相关阅读:
    信息 信息熵 信息增益
    数据挖掘导论
    拆包粘包问题的解决方案
    杂物
    《深入理解计算机系统》
    Flex布局
    jquery常用的选择器
    jdk源码阅读优先级
    js和jquery页面初始化加载函数的方法及先后顺序
    SpringBoot定时器任务,每月一号执行
  • 原文地址:https://www.cnblogs.com/showonce/p/5075420.html
Copyright © 2011-2022 走看看