• Socket 学习(二)


    1对1的发送和接收

    Client 端

            void ThreadReceive()
            {
                try
                {
                    while (true)
                    {
                        byte[] B = new byte[1024 * 1024];
                        int length = S1.Receive(B);
                        textBox1.AppendText(Encoding.UTF8.GetString(B, 0, length)+"
    ");
                    }
                }
                catch (Exception EX)
                {
                  textBox1.AppendText(EX.Message.ToString());
                }
     
     
            }
    button1_Click 加上
                    T1 = new Thread(ThreadReceive);
                    T1.IsBackground = true;
                    T1.Start();
    Server 端
     S2.Send(Encoding.UTF8.GetBytes(textBox2.Text));
    

           Dictionary<stringSocket> Dic = new Dictionary<stringSocket>();
    
    服务端增加字典 ,键代表 远程终结点,Socket 代表 与之通讯的套接字。跟不同终结点所对应的套接字通讯,这样1对多的通讯就完成了,群聊也可以实现了。

    什么是套接字:想通讯就要用到网卡,网线,驱动,我们C# 实现底层语言做这些太难了,于是微软封装成了socket,我们实例化的每个socket对象就是一个套接字,
            网络编程就是套接字与套接字之间交互。
    socket两种通讯方式:流式(stream)和 数据报文(DataGram),流式用的是tcp协议,数据报文用的是Udp协议
    TCP :安全,单连接,效率低
    UDP:把数据拆成多分,多个连接传输,效率高,数据接收完需要验证。

    socket 实际是对底层的封装,我们网络传输数据 至少要2根线,一进一出,socket 里面有 RemoteEndPoint(远程终结点) 和 LocalEndPoint(本地终结点) 分别代表网络的进,出关系。
    就到这里。。。
    
    

  • 相关阅读:
    Action直接访问Servlet API
    Struts2与Struts1的对比
    参入github上的开源项目的步骤
    TortoiseSVN中图标的含义
    eclipse 快捷键
    base(function strchr)
    1
    Java 关于路径
    java初阶
    关于C++中计时的方法
  • 原文地址:https://www.cnblogs.com/bingguang/p/3182745.html
Copyright © 2020-2023  润新知